java access 插入_java通过Access_JDBC30读取access数据库时无法获取最新插入的记录

1、编写了一个循环程序,每几秒钟读取一次,数据库中最新一行数据

连接access数据库的方法和查询的信息。之后开一个定时去掉用。

package javacommon.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import com.ybb.DBConnection;

/**

*

* @author ybb

* 连接Access数据库

* java通过Access_JDBC30获取access数据库数据,取不到最新的数据

*/

public class AccessDBUtil {

private static final String DRIVER="com.hxtt.sql.access.AccessDriver";

private static final String URL="jdbc:Access:///G:/ceshi/ceshi.mdb";

private static final String USER="";

private static final String PASSWORD="";

public static Connection getConnection(){

try {

Class.forName(DRIVER);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

try {

Connection connection = DriverManager.getConnection(URL, USER, PASSWORD);

return connection;

} catch (SQLException e) {

return null;

}

}

public static void colseConnection(Connection conn){

try {

if(conn!=null&&!conn.isClosed()){

conn.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

public static void myclose(Connection con,PreparedStatement ps){

try {

if (con!=null&&!con.isClosed()) {

con.close();

}

if (ps!=null) {

ps.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

public static void myclose(Connection con,PreparedStatement ps,ResultSet rs){

try {

if (con!=null&&!con.isClosed()) {

con.close();

}

if (ps!=null) {

ps.close();

}

if (rs!=null) {

rs.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 测试

* */

public static void main(String[] args){

Connection connnect = null;

while(true){

try{

connnect = AccessDBUtil.getConnection();

if(connnect!=null){

System.out.println(connnect+"\n连接成功");

}else{

System.out.println("连接失败");

}

Statement stat = connnect.createStatement();

ResultSet rs = stat.executeQuery("select * from CYJ_PD_QTJL");

if(rs!=null){

while(rs.next()){

System.out.println(rs.getString(1)+"\t"+rs.getString(2));

}

}

Thread.sleep(5000);

}catch(Exception e){

e.printStackTrace();

}finally{

colseConnection(connnect);//关闭链接

}

}

}

}

2、当手动向对应的access数据库中CYJ_PD_QTJL表

添加数据时,查询不到刚添加的数据。需要重启此程序才能查询到。

3、为了解决此问题更换驱动。用ODBC连接完美解决。

package com.ybb;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Properties;

/**

*

* @author ybb

* 连接access数据

* 获取access数据库数据,可以取到最新的数据

* 2019年4月16日 下午2:48:33

*/

public class DBConnection {

/**

* 该方法用来连接数据库

* @param db:数据源名称

* */

public static Connection getDBConnection(){

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//注册驱动

//Access中的数据库默认编码为GBK,本地项目为UTF-8,若不转码会出现乱码

Properties p = new Properties();

p.put("charSet", "GBK");

Connection connect= DriverManager.getConnection("jdbc:odbc:ceshi",p);

return connect;

}catch(Exception e){

e.printStackTrace();

return null;

}

}

/**

* 该方法用来执行SQL并返回结果集

* */

public static ResultSet selectQuery(String sql){

try{

PreparedStatement stmt = getDBConnection().prepareStatement(sql);

ResultSet rs = stmt.executeQuery();//执行SQL

return rs;

}catch(Exception e){

e.printStackTrace();

return null;

}

}

/**

* 测试

* */

public static void main(String[] args){

while(true){

try{

Connection connnect = DBConnection.getDBConnection();

if(connnect!=null){

System.out.println(connnect+"\n连接成功");

}else{

System.out.println("连接失败");

}

ResultSet rs1 = selectQuery("select * from CYJ_PD_QTJL");

if(rs1!=null){

while(rs1.next()){

System.out.println(rs1.getString(1)+"\t"+rs1.getString(2));

}

}

Thread.sleep(5000);

}catch(Exception e){

e.printStackTrace();

}finally{

//closeConn();//关闭链接

}

}

}

}

4、此时手动向CYJ_PD_QTJL表中添加数据。可以立刻查询到刚添加的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值