今天由于一个应用,需要连接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
分享到:
相关推荐
实例140 解决线程的死锁问题 182 6.3 线程的进阶 183 实例141 使用阻塞队列实现线程同步 183 实例142 新建有返回值的线程 184 实例143 使用线程池优化多线程编程 186 实例144 Object类中线程相关的方法 187 实例145 ...
软件简介:RazorSQL 是数据库查询工具、SQL的编辑、数据库管理工具,可以通过ODBC,JDBC连接数据库,已经证实可以使用的数据库种类,达到了29种. RazorSQL is an SQL query tool, database browser, SQL ...
8.1.1 jdbc-odbc桥 254 8.1.2 部分本地api java驱动程序 255 8.1.3 jdbc网络纯java驱动程序 255 8.1.4 本地协议的纯java驱动程序 256 8.2 安装数据库 256 8.3 jdbc api 260 8.3.1 加载并注册数据库驱动 261 ...
8.1.1 jdbc-odbc桥 254 8.1.2 部分本地api java驱动程序 255 8.1.3 jdbc网络纯java驱动程序 255 8.1.4 本地协议的纯java驱动程序 256 8.2 安装数据库 256 8.3 jdbc api 260 8.3.1 加载并注册数据库驱动 261 ...
8.1.1 jdbc-odbc桥 254 8.1.2 部分本地api java驱动程序 255 8.1.3 jdbc网络纯java驱动程序 255 8.1.4 本地协议的纯java驱动程序 256 8.2 安装数据库 256 8.3 jdbc api 260 8.3.1 加载并注册数据库驱动 261 ...
8.1.1 jdbc-odbc桥 254 8.1.2 部分本地api java驱动程序 255 8.1.3 jdbc网络纯java驱动程序 255 8.1.4 本地协议的纯java驱动程序 256 8.2 安装数据库 256 8.3 jdbc api 260 8.3.1 加载并注册数据库驱动 261 ...
常见问题 读取Properties文件出现中文乱码 182 第9章 Java异常处理与反射机制 183 实例73 运用throws、throw、try与catch 183 实例74 throws声明异常的实例 185 实例75 自定义异常类 187 实例76 使用finally...