`
vanadiumlin
  • 浏览: 508687 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

jdbc 连接 Access 乱码解决

阅读更多

这方面的资料网上异常的少,要么是jsp的连接方法要么就根本不解决问题的方法,其实我也不想用java连接access的,但是由于需求的需要,我必须这么做!

我们知道,java的字符串都是unicode编码的,所以读出的任何字符串都被默认处理为unicode,因此,我们必须将取出来的byte强制转码为gbk,然后java会自动将该gbk编码转为unicode的字符串,输出。

conn = DriverManager.getConnection(
"jdbc:odbc:你的数据库;useUnicode=false;characterEncoding=gbk", "user", "yourpassword");

public String readDB(){
try {
sql = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = sql.executeQuery("select * from grdj");
//            System.out.println(System.getProperties());
int i=1;
while (rs.next()) {
i++;
System.out.println(rs.getString(2));
System.out.println(new String(rs.getBytes(3),"gbk"));
System.out.println(rs.getString(4));
System.out.println(new String(rs.getBytes(5),"gbk"));
System.out.println(rs.getFloat(6));
System.out.println("-----------------");

}
System.out.println("all:"+i);
}catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(rs!=null){
rs.close();
}
if(sql!=null){
sql.close();
}
if(conn!=null){
conn.close();
}

//原创,转载注明出处,作者享有文章版权

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;        
}

这是一个简单的示例。

但是insert还是出现乱码,问题我估计还是因为流得原因。

下面一种方法可以完全解决问题,我参考了一个网上的方案,但是我的数据库是有密码的,因此显然对于通常的access-jdbc不适用。

因此,必须采用DriverManager.getConnection()的第三种参数法
DriverManager.getConnection(url,Properties);
首先,设定当前流的默认字符集,这是一个持久的对象:
Properties prop = new Properties(); 
prop.put("charSet", "gb2312");
然后如果数据库有密码,我们必须把用户名和密码的prop写完整
prop.put("user", "user");
prop.put("password", "yourpassword");
虽然,user参数无用,如果不写,直接报错

然后写url:"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + “你的mdb文件路径”

完整示例:

conn =  DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" +
"E:/My Archives/Dry Clean data bak/ganxi/prodata.mdb",prop);

OK下来就正常连接select update insert吧!问题完美解决,下一步我就应该开始写GUI界面解决我的实际问题喽~~

一向对微软不感冒,但是由于那破软件是delphi写的,漏洞百出,我曾经破解并屏蔽过一些功能,并且用的破access,没办法,只能硬着头皮连。

自己想自己开发一套软件用,用别人的软件太麻烦了,我个人要用的话肯定首选mysql或db4o面向对象数据库。我前段时间已经充分的感受到了面向对象数据库的魅力了,非常源生,非常好用,只需要写出一些beans,就可以进行操作了。

分享到:
评论

相关推荐

    java连接access的mdb文件

    总的来说,Java连接Access MDB文件涉及到JDBC接口、ODBC驱动和数据库操作的基本概念。虽然JDBC-ODBC桥接驱动在某些场景下仍可使用,但为了长期的稳定性和性能,应该考虑升级到更现代的解决方案。

    access乱码一文信息

    本文将深入探讨Access乱码现象的原因以及解决方案。 一、字符编码问题 1. 不同编码格式:Access数据库默认使用的是Windows系统内的ANSI编码,而其他文件或系统可能采用UTF-8、GBK等编码。当不同编码的文件交互时,...

    C#连接Oracle乱码及客户端dll

    本主题将详细探讨如何解决C#连接Oracle时出现的乱码问题以及涉及的dll文件。 首先,oci.dll、ocijdbc10.dll、ociw32.dll、oraocci10.dll和oraociei10.dll是Oracle数据访问组件,用于在不同平台上与Oracle数据库进行...

    UCanAccess包

    驱动连接Access数据库,Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");//这个驱动的地址不要改 Connection con=DriverManager.getConnection("jdbc:ucanaccess://E:\\test.mdb","","");

    Access mdb 转 sqlite 数据库java代码

    2. **连接数据库**:使用JDBC的`DriverManager.getConnection()`方法建立与Access和SQLite数据库的连接。 3. **SQL查询**:编写SQL语句来读取Access数据库中的表和记录,然后插入到SQLite数据库中。 4. **字符编码...

    sql,access导出表结构,互导

    反之,将SQL数据导入到Access,可以使用ODBC(Open Database Connectivity)或者JDBC(Java Database Connectivity)数据源,或者直接通过Access的“获取外部数据”功能来实现。在导入过程中,Access会尝试将SQL ...

    AccessDatabaseEngine_X64.exe 在用navicate录入excel到mysql的时候的一个插件(解决各种报错问题)

    标题中的"AccessDatabaseEngine_X64.exe"是一个重要的软件组件,它是Microsoft Office ...总的来说,"AccessDatabaseEngine_X64.exe"是连接Excel和MySQL的重要桥梁,有效解决了在数据迁移过程中可能出现的大部分问题。

    部门员工管理(jdbc+struts)

    【标题】"部门员工管理(jdbc+struts)"是一个基于Java Web技术的简易管理系统,它主要利用了Java数据库连接(JDBC)与Struts框架来实现对部门和员工数据的CRUD(创建、读取、更新、删除)操作。这个项目对于初学者来...

    jdbc+jsp实现简单员工管理系统.doc

    在本系统中,JDBC被用来实现DAO(Data Access Object)层,用于增删改查员工数据。 2. **JSP(JavaServer Pages)**:JSP是Java Web开发中的视图层技术,可以嵌入Java代码和表达式,用于动态生成HTML页面。在描述中...

    jsp数据库连接示例

    在上述过程中,因为是Access数据库且“免设数据源”,这意味着我们直接通过JDBC/ODBC桥接方式连接,而不是通过JNDI(Java Naming and Directory Interface)查找数据源。这种方式在小型项目或开发环境中常见,但在...

    jdbc-odbc的基本操作

    //连接的是jdbc-odbc桥 String dbUrl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+dbPath; cn = DriverManager.getConnection(dbUrl); pstmt = cn.prepareStatement("select PCity from ...

    DW制作动态新闻网时连接数据库Driver的注意点+代码

    1. **数据库选择**:首先,你需要确定使用哪种数据库系统,如MySQL、SQL Server或Access等。这将决定你需要的驱动类型。例如,MySQL通常使用JDBC-ODBC桥或MySQL Connector/J。 2. **驱动安装**:确保已经安装了相应...

    SpringBoot 集成 Jasypt 对数据库加密以及踩坑

    在本文中,我们将介绍如何在 SpringBoot 项目中集成 Jasypt 对数据库进行加密,并解决在使用 Jasypt 过程中遇到的常见问题。 在开始之前,需要首先添加 Jasypt 的依赖项到 pom.xml 文件中: ```xml <groupId>...

    jsp考试资料

    - **JDBC字符集**:数据库连接时,可以通过JDBC驱动程序设置字符集,如连接SQL Server或Access。 6. **JDBC连接数据库**: - **SQL Server**:连接SQL Server的JDBC程序未给出,但通常需要导入对应JDBC驱动,设置...

    基于Java Swing的图书管理系统-版本二(csdn)————程序.pdf

    - 提到了几个关键的教程链接,包括Microsoft Access 2016的安装教程、使用ODBC连接Access数据库、TextPad的安装配置、IDEA中运行Java Swing项目时解决中文乱码问题,以及如何用Java指令编译Java文件。 总之,这个...

    orcale驱动大全

    Oracle JDBC驱动是Java应用程序连接Oracle数据库的关键组件,它实现了Java Database Connectivity (JDBC) API,使得Java程序能够与Oracle数据库进行交互。 Oracle JDBC驱动分为四种类型: 1. ** Thin Driver(Type...

    图书管理系统源码+数据库

    通常,JDBC操作会通过 DAO(Data Access Object)模式进行封装,以减少代码重复,提高代码复用。 3. **数据库设计**:本系统必定包含了一个用于存储图书信息、用户信息、借阅记录等数据的数据库。可能包括如`books`...

    基于MySQL的数据库中间件Meituan-DBProxy.zip

    解决连接断开的内存泄露问题 在连接的结构体的释放接口中,lock 的成员变量未释放,导致在连接断开,回收连接对象时会泄漏24个字节 取消admin操作中不必要的日志 去掉了在连接 admin 时报"...

    java小结txt文档

    2. **JDBC连接配置**:设置JDBC连接字符串,例如`jdbc:mysql://localhost:3306/jd1207db?useUnicode=true&characterEncoding=utf8`,确保与数据库的连接时正确处理字符集编码。 **Web应用编码设置:** 1. **HTML...

    Java Web报价管理系统 带邮箱验证功能 项目开发案例

    【导入数据库乱码解决方法.png】这个文件可能包含了解决系统在导入数据库时出现乱码问题的具体步骤。这通常涉及到设置字符编码,比如在数据库连接URL中指定`useUnicode=true&characterEncoding=UTF-8`,确保数据在...

Global site tag (gtag.js) - Google Analytics