http://blog.csdn.net/iamoyjj/article/details/5805327
由于Java的String类型使用的是unicode编码,而微软的Access数据库使用的是gbk编码。使用String类型的变量存储Access中的文本字段中文会发生乱码现象。
使用byte[]类型可以解决这一问题。
[size=x-small][/size]
1.更新到数据库的文本字段
使用ResultSet的updateBytes方法
public void updateBytes(String columnName, byte[] x) throws SQLException
String str="要写入数据库的中文";//utf-8
使用String的getBytes方法
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException
转换编码格式为gbk
rs.updateBytes("columnName",str.getBytes("gbk"));
rs.updateRow();
这样写入Access数据库的中文字符便正常了;
2.从数据库字段读取文本
使用String类的构造函数
public String(byte[] bytes, String charsetName) throws UnsupportedEncodingException
str=new String(rs.getBytes("columnName"),"gbk");
这样读取到String中的中文字符便正常了。
上面就是解决Access数据文本字段和String类型间乱码问题的方法。
本质上说,就是编码类型不匹配。需要根据情况进行编码类型转换。
这是要有效的利用字节数据类型的方法,来达到目的,使用合适的API方法。 评论: 使用
str=new String(rs.getBytes("columnName"),"gbk");
从Access数据库读取数据时,如果遇到空字段时,getBytes()返回null,此时接着进行String转换,会出现nullpoint异常.
因此需要判断getBytes()的返回结果是否为空 ,不为空的情况下才能进行转换.
可以如下判断:
byte[] bts=null;
String other = null;
bts = rs.getBytes("OTHERS"); //读取other字段
if(bts != null) other = new String(bts,"gbk");//如果不为空,则进行转换
注意此时不能使用equals(null)进行判断是否为空,
也即不能用bts.equals(null)进行判断,这样判断同样抛出nullpointer异常.
因为getBytes如果读取空字段,返回空指针.
分享到:
相关推荐
总的来说,Java连接Access MDB文件涉及到JDBC接口、ODBC驱动和数据库操作的基本概念。虽然JDBC-ODBC桥接驱动在某些场景下仍可使用,但为了长期的稳定性和性能,应该考虑升级到更现代的解决方案。
//访问数据库中文乱码问题 //result = rs.getString(1); } else { result = tel + "属于未知地区"; } } catch (Exception e) { // throw new MyException(e); e.printStackTrace(); } finally { // 下面...
- 提到了几个关键的教程链接,包括Microsoft Access 2016的安装教程、使用ODBC连接Access数据库、TextPad的安装配置、IDEA中运行Java Swing项目时解决中文乱码问题,以及如何用Java指令编译Java文件。 总之,这个...
在上述过程中,因为是Access数据库且“免设数据源”,这意味着我们直接通过JDBC/ODBC桥接方式连接,而不是通过JNDI(Java Naming and Directory Interface)查找数据源。这种方式在小型项目或开发环境中常见,但在...
在Dreamweaver(DW)中制作动态新闻网,与数据库建立连接是至关重要的步骤。这个过程涉及到选择合适的数据库驱动(Driver),编写正确的连接代码,并确保所有配置都正确无误。以下是一些关键知识点和注意事项,以及...
- **JDBC字符集**:数据库连接时,可以通过JDBC驱动程序设置字符集,如连接SQL Server或Access。 6. **JDBC连接数据库**: - **SQL Server**:连接SQL Server的JDBC程序未给出,但通常需要导入对应JDBC驱动,设置...
Oracle JDBC驱动是Java应用程序连接Oracle数据库的关键组件,它实现了Java Database Connectivity (JDBC) API,使得Java程序能够与Oracle数据库进行交互。 Oracle JDBC驱动分为四种类型: 1. ** Thin Driver(Type...
- **JSP连接Access数据库**:使用JDBC-ODBC桥接驱动进行连接。 - **JSP连接MySQL数据库**:使用MySQL的JDBC驱动。 - **JSP连接SQL Server数据库**:使用Microsoft SQL Server的JDBC驱动。 每种数据库的连接方式略有...
书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。2011年1月出版。 全书压缩打包成4部分,这是第3部分 注:本系列图书的第I、II卷再版时均相应改名为...
- JDBC-ODBC桥接器:一种技术,通过ODBC驱动程序访问数据库,允许JDBC应用程序通过中间的ODBC层访问多种数据库。 - Hibernate 3.0:一个开源的对象关系映射(ORM)框架,用于将Java对象映射到数据库表,简化数据库...
标题中的"AccessDatabaseEngine_X64.exe"是一个重要的软件组件,它是Microsoft Office Access数据库引擎的64位版本。这个引擎允许程序(如Navicat)与Microsoft Access数据库格式交互,包括读取、写入和修改数据。在...
反之,将SQL数据导入到Access,可以使用ODBC(Open Database Connectivity)或者JDBC(Java Database Connectivity)数据源,或者直接通过Access的“获取外部数据”功能来实现。在导入过程中,Access会尝试将SQL ...
- 设置编码以解决中文乱码问题。 - **3.1.3 常用方法举例** - `request.getMethod()` 获取请求方法(GET/POST)。 - **3.1.4 用户注册** - 处理用户注册时提交的数据,并验证用户输入的有效性。 - **3.1.5 ...
软件简介:RazorSQL 是数据库查询工具、SQL的编辑、数据库管理工具,可以通过ODBC,JDBC连接数据库,已经证实可以使用的数据库种类,达到了29种. RazorSQL is an SQL query tool, database browser, SQL ...
jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Database.mdb;Uid=admin;Pwd=;CharSet=gb2312; ``` #### 解决方案四:HTML表单数据处理 在接收HTML表单提交的数据时,同样存在编码问题。推荐的做法是...
DBF(dBase File)是一种常见的数据库文件格式,最初由dBase系统引入,现在被许多其他数据库管理系统支持,包括Visual FoxPro、 Clipper 和 Microsoft Access等。这种文件格式存储表格数据,每个DBF文件通常包含表格...