JAVA连接Access数据库
最近有个项目,刚好用到ACCESS数据库,查好一些资料,结果很多都是使用Access_jdbc30或者40,我也使用了,结果用了50次就提示让交费,把我恶心住。不要使用这个驱动程序。JDK1.7去掉了sun.jdbc.odbc.JdbcOdbcDriver这个驱动,1.6会有这个驱动,有很多朋友让退回1.6版本,这个太老了。目前都10了,1.6版本?
请使用UCANACCESS jar包, 这是很好用的JAR包,官网下载地址为:https://sourceforge.net/projects/ucanaccess/, 你下载后,只需要取ucanaccess-4.0.4.jar,commons-lang-2.6.jar,commons-logging-1.1.3.jar,hsqldb.jar,jackcess-2.1.11.jar加入你的IDE。工具类的连接代码如下所示:
import java.sql.Connection;
import java.sql.DriverManager;
public final class DBUtil
{
private static final String dbDirectory = ResourceFileUtil.getValue(
"db.directory");
private static final String dbDriver = "net.ucanaccess.jdbc.UcanaccessDriver";
private static DBUtil dbUtil = null;
private static Connection connection = null;
private static String dbUrl = "jdbc:ucanaccess://" + “./db/student.accdb”;
static
{
try
{
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
}
catch (Exception e)
{
e.printStackTrace();
}
}
private DBUtil()
{
}
public static DBUtil getInstance()
{
if (dbUtil == null)
{
dbUtil = new DBUtil();
}
return dbUtil;
}
public static Connection getConnection()
{
try
{
connection = DriverManager.getConnection(dbUrl, "","");
}
catch (Exception e)
{
e.printStackTrace();
}
return connection;
}
}
2. 自己去创建Student对象吧。
public class student
{
String studentId;
get函数
set函数
}
3. 使用连接批量插入数据库:
public static int insertStudent(List<Student> studentList)
{
Connection connection = DBUtil.getInstance().getConnection();
String sqlInsert = "INSERT INTO studentinfo(student_id" )VALUES(?)";
PreparedStatement prest = null;
try
{
if (connection == null)
{
return FAIL;
}
prest = connection.prepareStatement(sqlInsert,
ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
connection.setAutoCommit(false);
for (Student student: studentList)
{
prest.setString(1, student.getStudentId());
prest.addBatch();
}
prest.executeBatch();
connection.commit();
}
catch (Exception e)
{
e.printStackTrace();
return FAIL;
}
finally
{
try
{
connection.close();
prest.close();
}
catch (Exception e)
{
e.printStackTrace();
return FAIL;
}
}
return SUCCESS;
}
根据学号查询姓名:
public static String getStudentName(String studentId) { Connection connection = DBUtil.getInstance().getConnection(); String sqlQuery = "select user_name from studentinfo where student_id='" + studentId + "'"; System.out.println(sqlQuery); ResultSet rs = null; String userName = null; try { if (connection == null) { return null; } Statement stmt = connection.createStatement(); rs = stmt.executeQuery(sqlQuery); System.out.println(rs); while (rs.next()) { System.out.println(rs.getString("user_name")); userName = rs.getString("user_name"); } } catch (Exception e) { e.printStackTrace(); return null; } finally { try { connection.close(); rs.close(); } catch (Exception e) { e.printStackTrace(); } } return userName; }