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 数据库表的例子

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

  3. php读取access数据库

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

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

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

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

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

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

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

  7. ASP通过ADODB读取Access数据库

    <% On Error Resume Next set conn=server.createobject("adodb.connection") mypath=server. ...

  8. asp.net读取Access数据库。

    注:数据库(表名 job  id 工作id ,job工作字段) 数据库放在app_data文件中.名称为database.mdb 如果用codesmith生成,选择的数据库连接类型如下图: 项目结构图 ...

  9. c# 读取ACCESS 数据库

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

随机推荐

  1. 交换机--Switch

    交换机(Switch)意为"开关"是一种用于电(光)信号转发的网络设备.它可以为接入交换机的任意两个网络节点提供独享的电信号通路.最常见的交换机是以太网交换机. 这里的" ...

  2. 6.Linux的文件权限与目录配置

    Linux文件属性:(- rwx r-x r-- 1 root root 2800 feb 1 11:55 test.txt 顺序按着空格排序,除了时间) 第一组字符代表这个文件是目录.文件或链接文件 ...

  3. Mir2源码详解之服务端-登录网关(LoginGate)

    传奇这款游戏,一直对我的影响很大.当年为了玩传奇,逃课,被老师叫过N次家长.言归正传,网上有很多源码,当然了,都是delphi的.并且很多源码还不全, 由于一直学习的c.c++.delphi还真不懂. ...

  4. struct 理解 (需要经常理解)

    2014.3.11 分析offviewer时,有一些问题,很基础的,但是忘记了,发现问题那就快点搞定它 以下内容参考自百度百科: (2)struct 结构体有点忘记了,要复习一下  定义一个结构的一般 ...

  5. JDBC学习总结(三)

    1.ResultSet光标控制     在创建Statement或PreparedStatement时使用的是Connection的无参数createStatement()方法或preparedSta ...

  6. Linux下用户及用户组的管理

    一.用户账号管理 1. 添加新用户账号 命令格式: useradd 选项 用户名 选项含义如下: -c comment 指定一段注释性描述. -d 目录 指定用户主目录,如果此目录不存在,则同时使用- ...

  7. 设计模式(Abstract Factory)抽象工厂

    1. 需求: 设计一个电脑组装程序,对于组装品牌电脑. 用零件组装(主板.硬盘.显示器)由品牌提供的所有. 让我们组装一台联想电脑,板子.由联想提供. (眼下仅仅有Lenovo和Dell两种品牌) 2 ...

  8. Samba文件共享服务

    Samba起源: 早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS开源文件共享程序:NFS ...

  9. 入门Webpack

    ---恢复内容开始--- 什么是WebPack,为什么要使用它? 为什要使用WebPack 现今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包.为了简化 ...

  10. 使用quartz实现不重启服务器修改自定义配置

    为了方便维护系统,开发中通常会设置一些自定义参数,写在单独的配置文件里,需要调整时可直接登录服务器修复配置文件,而不需要修改程序.但尴尬的是,web服务器并不会自动重新加载配置文件,重启服务器又会中断 ...