日期:2014-05-16  浏览次数:20434 次

Java连接数据库(1)

环境:netbeans

Java访问数据库有两种方法,第一种是JDBC-ODBC桥驱动程序,第二种是使用专用的数据库驱动程序。

这两种方法是这个意思:ODBC是微软开发出来的驱动程序,这个驱动程序可以用于连接绝大多数数据库比如mysql, postgresql,access,sql server,但是这个驱动程序是用C++写的,在java中不能直接使用,这样java开发者就弄了个JDBC-ODBC桥驱动程序,在java中通过这个JDBC-ODBC桥驱动程序来间接使用ODBC,从而可以连接绝大多数数据库。这其实是一种偷懒的做法。由于连接数据库要经过很多环节,所以效率可能不高,Sun公司不推荐这种方法。但是使用起来很方便,因为JDBC-ODBC桥驱动程序已经安装在了JAVA开发环境中,第二种方法就需要另外去数据库的官网下载相应的驱动程序。


专用的数据库驱动程序,就麻烦一点,但是更直接。每个数据库厂商需要单独开发一个数据库驱动程序,当然使用Java开发。然后在Java中使用这些驱动程序连接数据库。这样就大大减少了中间环节,效率就提高了。下面分别使用这两种方法来连接mysql和postgresql数据库。使用Java访问数据库,一般有这5个步骤(1)加载驱动程序。(2)建立连接对象。(3)创建语句对象。(4)获得sql执行结果的数据集。(5)关闭结果数据集,关闭语句对象,关闭连接。


(一)使用JDBC-ODBC访问mysql

我在mysql中创建了一个courseselection的数据库,数据库中有一个courses表。由于用到了ODBC驱动程序,所以首先要注册一个mysql的数据源。方法是:【控制面板】-【管理工具】-【数据源】-【系统DSN】标签卡,点击添加,出现【创建数据源】对话框,选择其中的mysql odbc driver

出现配置界面,如下填写(其中密码默认为123456)

这样就注册了一个数据源。其中连接的是courseselection数据库。


其余代码如下:

package try1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class MySqlOdbcDemo
{
    public static void main(String[] args) throws Exception
    {
	//加载JDBC-ODBC桥驱动程序
	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

	//设置数据源, myData是注册的数据源,连接的是courseselection数据库
	String dburl="jdbc:odbc:myData";

	//getConnection(数据源, 用户名, 密码)
	Connection conn = DriverManager.getConnection(dburl, "root", "123456");


	String sql = "Select * from courses";
	Statement stmt = conn.createStatement();
	ResultSet rst = stmt.executeQuery(sql);

	while (rst.next())
	{
	    //由于数据库与java中的默认编码不一致,所以不能直接读字符串,先读字节,然后转换
	    String st = new String(rst.getBytes(2), "UTF-8");
	    System.out.println(rst.getString(1) + ": " + st);
	}
	rst.close();
	stmt.close();
	conn.close();
    }
}
结果如下:

run:
a0101: 高等数学
a0102: 线性代数
b0011: 数据结构
b0101: 数字电路
b0111: 数据库
b0201: 数字电路
成功生成(总时间:0 秒)


2楼llhhyy19893天前 11:52
呵呵,学习
Re: WhoisPo前天 23:26
回复llhhyy1989最近比较懒,没有继续写。如果有误,欢迎指出。
1楼llhhyy19893天前 11:52
我都使用后者,专用的