今天由于一个应用,需要连接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命令行直接设置字符集来解决乱码问题。 - **步骤**: - 在Windows环境下,打开命令提示符窗口,进入到MySQL安装目录下的`bin`文件夹。 - 输入命令`mysql -u root ...
本文将详细解析通过Java Database Connectivity(JDBC)这一技术来连接八种常见数据库的方法,这包括MySQL、PostgreSQL、Oracle、Sybase、Microsoft SQL Server、ODBC、以及DB2。 ### 一、MySQL数据库连接 对于...
例如,MySQL通常使用JDBC-ODBC桥或MySQL Connector/J。 2. **驱动安装**:确保已经安装了相应的数据库驱动。例如,如果你使用的是MySQL,需要在服务器上安装MySQL Connector/J,以便DW能够识别并连接到MySQL数据库...
使用JDBC(Java Database Connectivity)是Java连接MySQL的首选方式,因为这种方式是纯Java实现,无需依赖操作系统特定的ODBC(Open Database Connectivity)驱动。为了建立这种连接,你需要以下步骤: 1. **添加...
4. **驱动问题**:如果没有正确的ODBC或JDBC驱动,Navicate无法正确识别和处理Excel文件。 "AccessDatabaseEngine_X64.exe"的安装可以解决上述驱动问题,它提供了ACE(Access Connectivity Engine),使Navicate...
另外,如果你在使用ODBC或者JDBC驱动连接MySQL,那么还需要确保驱动本身支持中文,并且正确配置了字符集。 总结一下,解决Delphi中ADOQuery操作MySQL中文乱码问题,主要步骤包括: 1. 确保MySQL数据库、表和字段...
- 通过JDBC-ODBC桥接器连接Excel文件并查询数据。 - **5.10 使用同步连接** - 在多线程环境中安全地管理数据库连接。 - **5.11 网上投票** - 实现一个简单的网上投票系统,涉及数据库的操作。 - **5.12 成绩录入...
- **环境的搭建与路径的配置问题**:确保所有必要的工具和库都已正确安装并配置。 - **Web页面出现乱码的问题**:这通常是由于编码设置不一致导致的。 - **IP地址受限存在的问题**:需要找到一种有效的方法来准确...
- **JDBC-ODBC桥接驱动**:这是最简单的驱动,它使用ODBC(开放式数据库连接)作为中间层,将Java应用程序的调用传递给ODBC驱动程序管理器。 - **部分Java、部分本机代码的驱动**:这种驱动程序不需要ODBC,但是仍然...
- **3.1.2 处理汉字信息**:解决中文乱码问题,通常需要设置正确的编码。 - **3.1.3 常用方法举例**:例如使用`getHeader()`获取HTTP头部信息。 - **3.1.4 用户注册**:通过`request`对象收集用户的注册信息。 -...
- **3.1.2 处理汉字信息**:解决中文乱码问题,通常涉及到设置正确的字符编码。 - **3.1.3 常用方法举例**:如getParameter()方法用于获取参数值。 - **3.1.4 用户注册**:利用request对象处理用户提交的注册信息...
- Kettle支持多种数据库连接方式,包括ODBC、JDBC等。 - 用户需根据具体数据库类型选择合适的驱动程序。 3. **Transaction** - Transaction(事务)用于保证数据处理的原子性和一致性。 - 在Kettle中,可使用...
1. **兼容性**:iReport 5.1支持多种数据库连接方式,包括ODBC、JDBC等,能够与主流的关系型数据库系统(如Oracle、MySQL、SQL Server等)无缝集成。 2. **多格式导出**:支持将报表导出为PDF、HTML、CSV、XML等多种...
例如,Python有`pyodbc`、`pandas`、`dbfread`等库,Java可以使用JDBC与JDBC-ODBC桥接,C#有`SharpDBF`,而PHP有`dbase`函数库等。选择哪种库通常取决于你的项目需求和个人偏好。 2. **字段定义**:DBF文件的头部...