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. wcf使用JetEntityFrameworkProvider.dll写access数据库时,报"操作必须使用一个可更新的查询"错误的解决办法

    由于users用户组无权重写access数据库,需要设置users组用户能读写access数据库.

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

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

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

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

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

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

随机推荐

  1. 推导正交投影(Orthographic Projection)

    定义六个面 left right bottom top near far   然后三个轴分开考虑 x轴 视椎体的x范围在[l,r],我们要变换到[-1,1] 1 减去l变换到[0, r-l] 2 乘以 ...

  2. shiro授权测试

    shiro-permission.ini 创建存放权限的配置文件shiro-permission.ini,如下: [users] #用户zhang的密码是1111111,此用户具有role1和role ...

  3. Java并发编程实战

    代码中比较容易出现bug的场景: 不一致的同步,直接调用Thread.run,未被释放的锁,空的同步块,双重检查加锁,在构造函数中启动一个线程,notify或notifyAll通知错误,Object. ...

  4. 谷歌浏览器隐藏url前缀问题

     此前曾有用户表示,谷歌若在Chrome的地址栏中隐藏URL的HTTP.HTTPS及WWW前缀,那么用户的安全将有可能遭至威胁,如果你不希望Chrome浏览器隐藏URL的HTTP.HTTPS及WWW前 ...

  5. 能不能在FOR循环中执行SQL?

    JDBC最基础的For循环处理SQL的方式 以及执行时间 package javaee.net.cn.jdbc; import java.sql.*; public class TestTransac ...

  6. 第二节:Java入门第一行代码

    前言 大家好,今天带来Java入门第一行代码的概述,希望你们喜欢 第一行代码 学习Java基础课程,学会使用eclipse,eclipse为Java集成开发坏境IDE,创建第一个Java源文件代码: ...

  7. Merge branch 'master' of xxx error

    Merge branch 'master' of xxx Please enter a commit message to explain why this merge is necessary,es ...

  8. VueJs(14)---理解Vuex

    理解Vuex 一.Vuex 是什么? 首先我们来分析一种实际开发中用vue.js的场景,你有n个组件,当你改变一个组件数据的时候需要同时改变其它n个组件的数据,那么我想你可能会对 vue 组件之间的通 ...

  9. .Net RabbitMQ之消息通信 构建RPC服务器

    1.消息投递服务 RabbitMQ是一种消息投递服务,怎么理解这句话呢?即RabbitMQ即不是消息的生产者,也是消息的消费者.他就像现实生活中快递模式,消费者在电商网站上下单买了一件商品,此时对应的 ...

  10. MySQL联合索引VS单列索引

    MySQL联合索引VS单列索引 以一个一千万数据量的表格为例 1. 建表建索引 USE foo; DROP TABLE IF EXISTS tmp; CREATE TABLE tmp ( id INT ...