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表中添加数据。可以立刻查询到刚添加的数据。
java通过Access_JDBC30读取access数据库时无法获取最新插入的记录的更多相关文章
- java读取ACCESS数据库的简单示例
java读取ACCESS数据库的简单示例 虽然简单,对初学者来说,如果没有一段可以成功执行的代码供参考,还真难调试 先用ACCESS建一个数据库 DB1.MDB,里面有一表"table1&q ...
- 使用c#訪问Access数据库时,提示找不到可安装的 ISAM
使用c#訪问Access数据库时,提示找不到可安装的 ISAM.例如以下图: 代码例如以下: connectionString = "Provider=Microsoft.Jet.OLEDB ...
- 【.Net 学习系列】-- Windows身份模拟(WindowsIdentity.Impersonate)时读取Access数据库
参考资料: WindowsIdentity.Impersonate https://msdn.microsoft.com/zh-cn/library/w070t6ka(v=vs.110).aspx A ...
- C# 读取 Access 数据库表的例子
using System;using System.Data;using System.Data.OleDb;using System.Collections.Generic;using System ...
- php读取access数据库
<?php //读取mdb数据库 $conn = new com("ADODB.Connection"); $connstr = "DRIVER={Microsof ...
- wcf使用JetEntityFrameworkProvider.dll写access数据库时,报"操作必须使用一个可更新的查询"错误的解决办法
由于users用户组无权重写access数据库,需要设置users组用户能读写access数据库.
- 数据库:mysql 获取刚插入行id[转]
我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但在多线程情况下,就不行了. 下面介 ...
- mysql数据库新插入数据,需要立即获取最新插入的id
在MySQL中,使用auto_increment类型的id字段作为表的主键.通常的做法,是通过“select max(id) from tablename”的做法,但是显然这种做法需要考虑并发的情况, ...
- java web中读取properties文件时的路径问题
在web开发时,难免会有一些固定的参数,我们一般把这些固定的参数存在properties文件中,然后用的时候要读出来.但经常出现一些错误,找不到相应的路径,所以,今天特地讲一些如何正确获得路径. 首先 ...
随机推荐
- HashTable使用举例--C#
一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中 ...
- 【npm】伙计,给我来一杯package.json!不加糖
前言:夜深了,我熬了一锅热气腾腾的package.json,给大家端上来,希望大家喜欢 json和JS对象的区别 package.json,顾名思义,它是一个json文件,而不能写入JS对象. 所以我 ...
- 脑残式网络编程入门(六):什么是公网IP和内网IP?NAT转换又是什么鬼?
本文引用了“帅地”发表于公众号苦逼的码农的技术分享. 1.引言 搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地址)和内网IP(即局域网IP地址),但他们的区别是什么?又有什么关系呢 ...
- Android Studio 调试各种国产手机经验总结
为何加上“国产”二字呢,因为目前测试时就国产手机存在的安装问题多,而且都很奇葩,不得不说对于开发者时很不友好的. 下面就是个人总结的针对不同的机型调试时出现的问题做的总结: 1.VIVO 手机 解决方 ...
- Inotify+Rsync实现Linux服务器文件同步
做这个功能的时候遇到了好多坑,在此感谢一下这篇博客 http://kerry.blog.51cto.com/172631/734087/ ,大家参照这篇博客就能实现该功能. 另外如果想详细了解一下的 ...
- 使用clipBoard.js进行页面内容复制
官方网址: https://clipboardjs.com/
- 如何获取java运行时动态生成的class文件?
查看运行时生成的文件,以更清楚运行情况. 查看动态生成的类,一般有两个方法: 1. 使用据说是jdk自带包sa-jdi.jar里的工具. 其中,不想自己搞,当然就利用下,sa-jdi.jar 里自带的 ...
- 写了2年python,知道 if __name__ == '__main__' 什么意思吗?
相信刚接触Python的你一定有过如此经历,把所有的代码都写在 if __name__ == '__main__'下,因为有人告诉你,这样比较符合 Pythonista 的代码风格. 殊不知这段代码的 ...
- Java核心技术及面试指南 2.3.6 String相关的面试题答案
2.3.6.1 String是最基本的数据类型吗?能不能被继承? String不能被继承,它是一个对象 2.3.6.2 String s = new String("xyz");创 ...
- java提高(1)---异常
异常 一.异常与错误的区别 再讲异常之前我们就应该要知道异常和错误的区别 Error类和Exception类的父类都是throwable类,他们的区别是: Error类一般是指与虚拟机相关的问题,如系 ...