`
dondavid
  • 浏览: 5195 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JDBC-ODBC桥连接MySQL的配置以及乱码问题的解决

 
阅读更多

      今天由于一个应用,需要连接MySQL,但是碰巧不支持JDBC直接连接,只能通过ODBC方式。在安装JDK的时候,实际上已经安装了sun的JDBC-ODBC桥驱动,也就是在通过ODBC连接数据库之后,就可以和JDBC一样的方式来操作数据库的读写了。下图是JDBC-ODBC调用方式的一个示意图,摘自某网友的博客。

首先,应该需要安装一个MySQL的ODBC驱动,下载可以直接去mysql官网去下,参考链接:http://www.mysql.com/downloads/connector/odbc/5.2.html。安装之后,打开控制面板->管理工具->数据源(ODBC),在用户DSN面板上添加MySQL数据源。

Test测试通过之后,点击OK就完成了本地ODBC数据源的配置。

 

然后就可以写个java小程序测试一下JDBC-ODBC桥了。示例代码如下:

 

 

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class Test2 {
	public static void main(String[] args) {
		Connection connection = null;
		Statement statement;
		ResultSet resultSet;
		// 加载驱动程序以连接数据库
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");// 这个驱动不能是其他的..
			//ITOMySQL是data Source ,root是用户名,messi是进入mysql的密码
			Properties props = new Properties();
			props.put("user", "root");
			props.put("password", "root");
			//props.put("charSet", "UTF-8");
			connection = DriverManager.getConnection("jdbc:odbc:ITOMySQL",props);
			String query = "select * from security_role";
			statement = connection.createStatement();
			resultSet = statement.executeQuery(query);
			while (resultSet.next()) {
				System.out.print("id:");
				System.out.print(resultSet.getString(1));
				System.out.print("          name:");
				System.out.print(resultSet.getString(2));
				System.out.print("                             description:");
				System.out.print(resultSet.getString(3));
				System.out.println();
			}
			connection.close();

		}
		// 捕获加载驱动程序异常
		catch (ClassNotFoundException cnfex) {
			System.err.println("装载    JDBC/ODBC 驱动程序失败。");
			cnfex.printStackTrace();
			System.exit(1); // terminate program
		}
		// 捕获连接数据库异常
		catch (SQLException sqlex) {
			System.err.println("无法连接数据库");
			sqlex.printStackTrace();
			System.exit(1); // terminate program
		} catch (Exception e) {
			System.out.println(e.toString());
		}
	}
}

 运行代码,正常运行!但是发现中文字符出现乱码。检查了下数据库默认字符集为UTF-8,怀疑可能是ODBC没有指定UTF-8的字符集,于是采用JDBC的方式来指定一个charSet的property(代码中已经注释)来进行连接,但是发现仍然获取到的是乱码。笔者怀疑ODBC数据源可能还有更多的配置,于是去ODBC数据源配置的面板上发现了还有配置指定字符集的选项如图:

 


选择相应的字符集,这里选择的是UTF-8字符集,和数据库的字符集保持一致。再运行代码就可以正常显示中文了。

  • 大小: 40.8 KB
  • 大小: 58.2 KB
分享到:
评论

相关推荐

    mysql中文乱码解决

    - **背景**:在导入数据到新环境时,可以通过MySQL命令行直接设置字符集来解决乱码问题。 - **步骤**: - 在Windows环境下,打开命令提示符窗口,进入到MySQL安装目录下的`bin`文件夹。 - 输入命令`mysql -u root ...

    数据库连接大全——jdbc连接

    本文将详细解析通过Java Database Connectivity(JDBC)这一技术来连接八种常见数据库的方法,这包括MySQL、PostgreSQL、Oracle、Sybase、Microsoft SQL Server、ODBC、以及DB2。 ### 一、MySQL数据库连接 对于...

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

    例如,MySQL通常使用JDBC-ODBC桥或MySQL Connector/J。 2. **驱动安装**:确保已经安装了相应的数据库驱动。例如,如果你使用的是MySQL,需要在服务器上安装MySQL Connector/J,以便DW能够识别并连接到MySQL数据库...

    Java连MySQL乱码[参照].pdf

    使用JDBC(Java Database Connectivity)是Java连接MySQL的首选方式,因为这种方式是纯Java实现,无需依赖操作系统特定的ODBC(Open Database Connectivity)驱动。为了建立这种连接,你需要以下步骤: 1. **添加...

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

    4. **驱动问题**:如果没有正确的ODBC或JDBC驱动,Navicate无法正确识别和处理Excel文件。 "AccessDatabaseEngine_X64.exe"的安装可以解决上述驱动问题,它提供了ACE(Access Connectivity Engine),使Navicate...

    ADOteststring.rar

    另外,如果你在使用ODBC或者JDBC驱动连接MySQL,那么还需要确保驱动本身支持中文,并且正确配置了字符集。 总结一下,解决Delphi中ADOQuery操作MySQL中文乱码问题,主要步骤包括: 1. 确保MySQL数据库、表和字段...

    jsp 教程

    - 通过JDBC-ODBC桥接器连接Excel文件并查询数据。 - **5.10 使用同步连接** - 在多线程环境中安全地管理数据库连接。 - **5.11 网上投票** - 实现一个简单的网上投票系统,涉及数据库的操作。 - **5.12 成绩录入...

    基于JSP投票调查的WEB模块的实现(论文).doc

    - **环境的搭建与路径的配置问题**:确保所有必要的工具和库都已正确安装并配置。 - **Web页面出现乱码的问题**:这通常是由于编码设置不一致导致的。 - **IP地址受限存在的问题**:需要找到一种有效的方法来准确...

    java数据库

    - **JDBC-ODBC桥接驱动**:这是最简单的驱动,它使用ODBC(开放式数据库连接)作为中间层,将Java应用程序的调用传递给ODBC驱动程序管理器。 - **部分Java、部分本机代码的驱动**:这种驱动程序不需要ODBC,但是仍然...

    JSP教程——必看.pdf

    - **3.1.2 处理汉字信息**:解决中文乱码问题,通常需要设置正确的编码。 - **3.1.3 常用方法举例**:例如使用`getHeader()`获取HTTP头部信息。 - **3.1.4 用户注册**:通过`request`对象收集用户的注册信息。 -...

    JSP教程

    - **3.1.2 处理汉字信息**:解决中文乱码问题,通常涉及到设置正确的字符编码。 - **3.1.3 常用方法举例**:如getParameter()方法用于获取参数值。 - **3.1.4 用户注册**:利用request对象处理用户提交的注册信息...

    kettle 常见问题

    - Kettle支持多种数据库连接方式,包括ODBC、JDBC等。 - 用户需根据具体数据库类型选择合适的驱动程序。 3. **Transaction** - Transaction(事务)用于保证数据处理的原子性和一致性。 - 在Kettle中,可使用...

    iReport-5.1.0-windows-installer.exe

    1. **兼容性**:iReport 5.1支持多种数据库连接方式,包括ODBC、JDBC等,能够与主流的关系型数据库系统(如Oracle、MySQL、SQL Server等)无缝集成。 2. **多格式导出**:支持将报表导出为PDF、HTML、CSV、XML等多种...

    完整版读取DBF数据.rar

    例如,Python有`pyodbc`、`pandas`、`dbfread`等库,Java可以使用JDBC与JDBC-ODBC桥接,C#有`SharpDBF`,而PHP有`dbase`函数库等。选择哪种库通常取决于你的项目需求和个人偏好。 2. **字段定义**:DBF文件的头部...

Global site tag (gtag.js) - Google Analytics