java通过Access_JDBC30读取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表中添加數據。可以立刻查詢到剛添加的數據。
?
轉載于:https://www.cnblogs.com/ywx2/p/10724411.html
總結
以上是生活随笔為你收集整理的java通过Access_JDBC30读取access数据库时无法获取最新插入的记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java例题】5.3线性表的使用
- 下一篇: java——什么是浅表副本