大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: 连接数据库

为了要连线MySQL数据库,您必须要有MySQL JDBC驱动程序,请将下载的mysql-connector-java-*.jar加入至CLASSPATH中,这边先以Java Class来示范如何连线MySQL,Java类中与数据库操作相关的类都位于java.sql包中。

要连线MySQL,必须经由几个动作:
  • 载入与注册JDBC驱动程序
透过java.lang.Class类的forName()来载入并向DriverManager注册JDBC驱动程序(驱动程序会自动透过DriverManager.registerDriver()方法注册), MySQL的驱动程序类是com.mysql.jdbc.Driver,您如下载入与注册JDBC驱动程序:
try {
    Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e) {
    System.out.println("找不到驱动程序类");
}
 
如果找不到com.mysql.jdbc.Driver类,就会丢出 ClassNotFoundException,这时请确定您的CLASSPATH中是否包括了mysql-connector-java-*.jar的位置。

  • 提供JDBC URL
JDBC URL定义了连接数据库时的协定、子协定、数据来源职别:
协定:子协定:数据来源识别

协定在JDBC中总是jdbc开始;子协定是桥接的驱动程序或是数据库管理系统名称,使用MySQL的话是 mysql;数据来源识别标出找出数据库来源的位址;MySQL的JDBC URL撰写方式如下:
jdbc:mysql://主机名称:连接埠/数据库名称?参数1=值1&参数2=值2

主机名称可以是本机localhost或是其它连线主机,连接埠为3306,假如我们要连线GUESTBOOK 数据库,并指明使用者名称与密码,可以如下指定:
jdbc:mysql://localhost:3306/GUESTBOOK?user=caterpillar&password=123456

如果要使用中文存取的话,还必须给定参数userUnicodecharacterEncoding,表明是否使用Unicode,并指定字节编码方式,例如:
jdbc:mysql://localhost:3306/GUESTBOOK?user=caterpillar&password=123456 &useUnicode=true&characterEncoding=Big5

中文的编码方式除了Big5之外,还可以使用UTF8,这可以避免Big5中文字“许”、“功”、“盖”等存入 MySQL所发生的问题。

  • 从DriverManager取得Connection
要连线数据库,我们可以从DriverManager要求并取得Connection对象,它代表数据库连线对象,您可以直接给它JDBC URL作为参数并取回Connection对象:
try {
    String url =  "jdbc:mysql://localhost:3306/GUESTBOOK?" +
                  "user=caterpillar&password=123456";
    Connection conn = DriverManager.getConnection(url);
    if(!conn.isClosed())
        System.out.println("数据库连线成功");

    conn.close();
}
catch(SQLException e) {
    ....
}
 

取得Connection对象之后,您可以测试与数据库的连线是否关闭,即使用isClosed(),在操作完数据库之后,必须使用close()来关闭与数据库的连线。

getConnection()方法也提供给定使用者名称与密码的方式来给定参数,例如:
String url = "jdbc:mysql://localhost:3306/GUESTBOOK";
String user = "caterpillar";
String password = "123456";
Connection conn = DriverManager.getConnection(url,
                                         user, password);
 

下面这个程序是用来测试与数据库的连线是否成功的一个完整范例:

  • DBConnectionDemo.java
package onlyfun.caterpillar;

import java.sql.*;

public class DBConnectionDemo {
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/GUESTBOOK";
String user = "caterpillar";
String password = "123456";
try {
Class.forName(driver);
Connection conn =
DriverManager.getConnection(url,
user, password);

if(conn != null && !conn.isClosed()) {
System.out.println("数据库连线测试成功!");
conn.close();
}

}
catch(ClassNotFoundException e) {
System.out.println("找不到驱动程序类");
e.printStackTrace();
}
catch(SQLException e) {
e.printStackTrace();
}
}
}