关于javabean连接access数据库的问题

tcsn221 2011-11-04 06:33:04
/**
* 下面这个javabean会抛出异常,不能正确连接数据库,我怎么查都不知道问题出在哪里~~~求救啊!!
*
*
*/

package com.yxq.toolbean;

import com.yxq.valuebean.GoodsSingle; //导入包
import java.sql.*; //导入数据库操作的类
import java.util.ArrayList;

public class CatenateDatabase{ //构造方法,初始化
private Connection conn; //连接对象
private Statement stmt; //语句对象
private ResultSet rs; //结果集对象
private String accessdriver; //保存Access驱动程序字符串
private String accessURL; //保存Access连接字符串
private int rowCount = 0; //保存记录集数量
private String[] names; //传递商品名字进值javabean
private float[] prices; //传递商品名字进值javabean
private int shu = 0; //传递时用的下标
private GoodsSingle goods; //封装商品信息
private ArrayList goodslist=new ArrayList();//存储商品

public CatenateDatabase()
{
//Access驱动程序
accessdriver="sun.jdbc.odbc.JdbcOdbcDriver";
//连接字符串
accessURL="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:/Users/tcsn/Desktop/tcsn/ShopCar/ShopCar.mdb";
conn = null;
}
//该方法从参数得到数据库路径,并加到连接字符串后面,然后再建立连接
public void getConnToAccess(){
try{
Class.forName(accessdriver);
conn = DriverManager.getConnection(accessURL,"","");
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery("select * from Goods");
rs.last(); //移到最后一行
rowCount = rs.getRow(); //得到当前行号,也就是记录数
names = new String[rowCount];
prices = new float[rowCount];
rs.beforeFirst(); //还要用到记录集,就把指针再移到初始化的位置
while(rs.next()){
names[shu]=rs.getString(1);
prices[shu]=rs.getFloat(2);
shu++;
}
for(int i=0;i<names.length;i++){
goods.setName(names[i]);
goods.setPrice(prices[i]);
goods.setNum(1);
goodslist.add(i,goods);
}
close();
}catch(Exception e){
System.out.println("操作数据库出错,请仔细检查");
System.err.println(e.getMessage());
}
}
//关闭数据库连接
public void close()
{
try{
rs.close();
stmt.close();
conn.close();
}catch(SQLException sqlexception){
sqlexception.printStackTrace();
}
}
}
...全文
106 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcsn221 2011-11-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 beiouwolf 的回复:]

异常堆栈哪?
你报什么错也不说,让别人靠猜的吗...

话说...你debug程序连printStackTrace也不打印呀...那怎么做错误跟踪...
[/Quote]
我已经找到错误了~~~汗!有个对象没初始化!
beiouwolf 2011-11-04
  • 打赏
  • 举报
回复
异常堆栈哪?
你报什么错也不说,让别人靠猜的吗...

话说...你debug程序连printStackTrace也不打印呀...那怎么做错误跟踪...
是一个最简单,也是学习jsp必须会的一个入门实验----通过jdbc连接数据库。 采用jsp+access数据库实现,同时使用javabean通过jdbc连接数据库。运行结果将显示从数据库查询出的图书。里面包含了javabean的源代码及解释。 提示:如果是要下jsp图书管理系统的朋友,请下载我上传的另一个资源----jsp+access图书管理系统。就不要再下本资源了,本资源只是做了一个图书的表,用以连接数据库查询图书,并没有对图书的增、删、改功能。 javabean源代码: package sjob; import java.sql.*; public class connBook { private Statement state=null; private Connection conn = null; ResultSet results=null; public connBook() { } public void openConn()throws Exception //连接数据库 { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:book"; conn=DriverManager.getConnection(url,"",""); //数据库、用户名、密码 ,创建连接对象 } catch(SQLException e) //异常处理 { System.err.println("Data.executeQuery: " +e.getMessage()); } } public ResultSet queryResult(String query) { results = null; try { state=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); //创建访问数据库的对象 results=state.executeQuery(query); //查询并返回结果 } catch(SQLException e) { System.err.println("Data.executeQuery: " + e.getMessage()); } return results; } public void closeState() { try { state.close(); //关闭访问数据库的对象 } catch(SQLException e) { System.err.println("Date.executeQuery: " + e.getMessage()); } } public void closeConn() { try { conn.close(); //断开连接 } catch(SQLException e) { System.err.println("Data.executeQuery: " + e.getMessage()); } } }
1、由jsp+access实现的图书管理系统,页面很简单,但该有的登录及图书的增、删、改、查功能都具有,且本人亲自调试过。 2、内附了javabean的源代码,并做了解释。 3、本资源适合jsp入门的朋友们下来学习参考。 javabean代码: package bjob; import java.sql.*; public class connLib { private Statement state=null; private Connection conn = null; ResultSet results=null; public connLib() { } public void openConn()throws Exception //连接数据库 { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:bookManage"; conn=DriverManager.getConnection(url,"",""); //数据库、用户名、密码 ,创建连接对象 } catch(SQLException e) //异常处理 { System.err.println("Data.executeQuery: " +e.getMessage()); } } public ResultSet queryResult(String querySql) //执行查询 { results = null; try { state=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); //创建访问数据库的对象 results=state.executeQuery(querySql); //查询并返回结果 } catch(SQLException e) { System.err.println("Data.executeQuery: " + e.getMessage()); } return results; } public void updateData(String updateSql) //插入或修改数据 { try { state=conn.createStatement(); //创建访问数据库的对象 state.executeUpdate(updateSql); //更新数据 } catch(SQLException e) { System.err.println("Data.executeUpdate: " + e.getMessage()); } } public void closeState() { try { state.close(); //关闭访问数据库的对象 } catch(SQLException e) { System.err.println("Date.executeQuery: " + e.getMessage()); } } public void closeConn() { try { conn.close(); //断开连接 } catch(SQLException e) { System.err.println("Data.executeQuery: " + e.getMessage()); } } }

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧