为了要联机MySQL数据库,您必须要有MySQL JDBC驱动程序,请将下载的mysql-connector-java-*.jar加入至CLASSPATH中,这边先以Java Class来示范如何联机MySQL,Java类别中与数据库操作相关的类别都位于java.sql套件中。
要联机MySQL,必须经由几个动作:
透过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中总是jdbc开始;子协议是桥接的驱动程序或是数据库管理系统名称,使用MySQL的话是 mysql;数据来源识别标出找出数据库来源的地址;MySQL的JDBC URL撰写方式如下:
jdbc:mysql://主机名称:连接端口/数据库名称?参数1=值1&参数2=值2
主机名称可以是本机localhost或是其它联机主机,连接端口为3306,假如我们要联机GUESTBOOK 数据库,并指明使用者名称与密码,可以如下指定:
jdbc:mysql://localhost:3306/GUESTBOOK?user=caterpillar&password=123456
如果要使用中文存取的话,还必须给定参数userUnicode及characterEncoding,表明是否使用Unicode,并指定字符编码方式,例如:
jdbc:mysql://localhost:3306/GUESTBOOK?user=caterpillar&password=123456 &useUnicode=true&characterEncoding=Big5
中文的编码方式除了Big5之外,还可以使用UTF8,这可以避免Big5中文字「许」、「功」、「盖」等存入 MySQL所发生的问题。
要联机数据库,我们可以从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);
下面这个程序是用来测试与数据库的联机是否成功的一个完整范例:
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(); } } }