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表中添加数据。可以立刻查询到刚添加的数据。

java通过Access_JDBC30读取access数据库时无法获取最新插入的记录的更多相关文章

  1. java读取ACCESS数据库的简单示例

    java读取ACCESS数据库的简单示例 虽然简单,对初学者来说,如果没有一段可以成功执行的代码供参考,还真难调试 先用ACCESS建一个数据库 DB1.MDB,里面有一表"table1&q ...

  2. 使用c#訪问Access数据库时,提示找不到可安装的 ISAM

    使用c#訪问Access数据库时,提示找不到可安装的 ISAM.例如以下图: 代码例如以下: connectionString = "Provider=Microsoft.Jet.OLEDB ...

  3. 【.Net 学习系列】-- Windows身份模拟(WindowsIdentity.Impersonate)时读取Access数据库

    参考资料: WindowsIdentity.Impersonate https://msdn.microsoft.com/zh-cn/library/w070t6ka(v=vs.110).aspx A ...

  4. C# 读取 Access 数据库表的例子

    using System;using System.Data;using System.Data.OleDb;using System.Collections.Generic;using System ...

  5. php读取access数据库

    <?php //读取mdb数据库 $conn = new com("ADODB.Connection"); $connstr = "DRIVER={Microsof ...

  6. 数据库:mysql 获取刚插入行id[转]

    我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但在多线程情况下,就不行了. 下面介 ...

  7. mysql数据库新插入数据,需要立即获取最新插入的id

    在MySQL中,使用auto_increment类型的id字段作为表的主键.通常的做法,是通过“select max(id) from tablename”的做法,但是显然这种做法需要考虑并发的情况, ...

  8. java web中读取properties文件时的路径问题

    在web开发时,难免会有一些固定的参数,我们一般把这些固定的参数存在properties文件中,然后用的时候要读出来.但经常出现一些错误,找不到相应的路径,所以,今天特地讲一些如何正确获得路径. 首先 ...

  9. java poi技术读取到数据库

    https://www.cnblogs.com/hongten/p/java_poi_excel.html java的poi技术读取Excel数据到MySQL 这篇blog是介绍java中的poi技术 ...

随机推荐

  1. keep your work after network broken

    如下设置可以保证在网络中断后tso仍然可以继续active,并等到下一次reconnect sys1.tcpparms(tnprof7d) -- Dataset name and PDS name b ...

  2. Create a method synchronized without using synchronized keyword

    Actually, lots of ways: No need for synchronization at all if you don't have mutable state. No need ...

  3. .NET Reflector 8.3.3.115 官方最新版+注册机(强大的.NET反编译工具破解版)

    Lutz Roeder’s .NET Reflector,是一个可以将以.NET Framework为基础开发出来的的DLL或EXE文件,反编译为原始程序的工具软件..NET Reflector 工具 ...

  4. JavaScript 自动分页插件 datatables

    DataTables Table plug-in for jQuery https://www.datatables.net/

  5. 全选demo

    我们处理数据时,最好能够支持全选操作. 选中之后,进行删除,或其他处理. 我自己写了一个demo. 主要功能: 1.点击全部选中 2.点击全部取消 3.然后进行获取选中的id,进行处理 代码如下: & ...

  6. Get started - UIkit documentation

    Get started - UIkit documentation Get started Get familiar with the basic setup and structure of UIk ...

  7. 安徽省2016“京胜杯”程序设计大赛_C_箭无虚发

    箭无虚发 Time Limit: 1000 MS Memory Limit: 65536 KB Total Submissions: 128 Accepted: 21 Description      ...

  8. mac怎么快速回到桌面 隐藏所有窗口

    当你同时按下Option+Command+h键,就能把所有已打开的程序窗口(不包括当前正在运行的应用程序窗口)最小化到Dock栏上.注意不是关闭哦,是最小化哦.如果需要把程序窗口恢复到屏幕上,直接点击 ...

  9. postmortem报告

    beta阶段与alpha阶段的比较 beta阶段与alpha阶段的比较主要从个人方面和团队方面进行总结. 以下是我们的队员对于自己在beta阶段的实践和alpha阶段的改进的总结. 成员林静雯认为,自 ...

  10. TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)

    题目链接...无 题目: P1864 [Poetize I]守卫者的挑战 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 打开了黑魔法师Vani的大门,队员们 ...