关于javabean连接access数据库的问题
/**
* 下面这个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();
}
}
}