19.1 Java连接MySQL数据库
Java语言可以通过JDBC(Java Database Connectivity, Java数据库连接)来访问 MySQL 数据库。JDBC的编程接口提供的接口和类与mYsql数据库建立连接,然后将SQL语句的执行结果进行处理。但这需要一个MySQL数据库的JDBC驱动程序。本节将为读者介绍Java连接MySQL数据库的方法。
19.1.1 下载 JDBC 驱动 MySQL Connector/J
读者可以在MySQL的官方网站下载JDBC驱动。当前最新的JDBC驱动程序是MySQL Connector/J 5.1。MySQL Connector/J 5.1 的下载网址为 http://dev.mysql.conVdownloads/connector/j/5.1.html。在 下载页面有Source and Binaries (tar.gz)和 Source and Binaries (zip)两个下载选项。前者主要用于Linux操作系统,后者主要用于界Windows操作系统。下载后的文件分别是 mysql-connector-java-5.1.10.tar.gz 和 mysql-connector-java-5.1.10.zip。这里面都包含驱动的源代码和二进制包。源代码可以自行进行编译。二进制包是编译好的驱动,名称为 mysql-connector-java-5.1.10-bin.jar。
19.1.2 安装MySQL Connector/J驱动
Shell或DOS窗口和ECLIPSE等编程工具中使用JDBC的方式是不一样的。前者需要将JDBC驱动的路径添加到环境变量中。后者可以直接将JDBC驱动添加到Eclipse等工具中。在WindowS操作系统中右击【我的电脑】图标,在弹出的菜单中选择【属性】命令,然后单击【高级】|【环境变量】按钮。在弹出的窗口中可以看到用户环境变量。在classpath变量中添加mysql-connector-java-5.1.10-bin.jar的路径。在DOS窗口中执行的Java语句中需要调用JDBC驱动时,系统会自动到classpath变量中设置的路径中去查找。
Linux操作系统下先使用tar命令来解压mysql-connector-java-5.110.tar.gz。命令如下:
tar -xzvf mysql-connector-java-5.1.10.tar.gz
解压完成后,可以看到源代码和jar包文件。需要在/etc/profile文件中添加见JDBC驱动的jar包的路径。假设jar包mysql-connector-java-5.110-bin.jar存储在/home/mine目录下。 用vi工具打开/etc/profile文件,并按照下面的方式添加环境变量。
CLASSPATH=.;/home/mine/mysql-connector-java-5.1.10-bin.jar export CLASSPATH
如果读者使用的Edipse或者MyEclipse,可以直接将HDBC驱动添加到编程工具中。 单击Window|Preferences命令,进入Preferences窗口,在该窗口中町以选择Java|Build Path|User Library选项。在出现的窗口中可以添加新的jar包,如图19.1所示。
在窗口右边单击New按钮,可以建立库文件并为其取名,可以取名为MySQL-JDBC。 单市Add JARs按钮,可以添加新的jar包,在此处将mysql-connector-java-5.1.10-bin.jar添 加到Eclipse中。右击工程名后选择Build Path选项。在其弹出的下拉菜单中单击Add Library按钮。在弹出的Add Library窗口中选择User Library选项,然后单击Next按钮。在新窗口中选择 MySQL-JDBC选项,然后单击Finish按钮;这样jDBC驱动就添加到Eclipse中了。
技巧:Windows操作系统中,在classpath变量中添加JDBC驱动的路径后可能需要重新启动计算机。在MyEclipse中可以使用上述方法添加JDBC驱动。如果在MyEclipse中创建Web工程,可以直接将JDBC驱动的jar包拷贝到指定工程的 WebRoot|WEB-INF|lib 目录下。
19.1.3 连接MySQL数据库
在java.sql 包中存在DriverManager类、Connnection接口、Statement 接口和ResultSet接口。这些类和接口的作用如下。
DriverManager类:主要用于管理驱动程序和连接数据库
Connection接口:主要用于管理建立好的数据库连接
Statement接口 :主要用于执行SQL语句
ResultSet接口:主要用于存储数据库返回的记录
通过DriverManager类和Connnection接口实现连接数据库的功能。首先使用 java.lang.Class类中的forName()方法来指定JDBC驱动的类型。forName()方法指定MySQL驱动的语句如下:
Class.forName("com.mysql.jdbc.Driver");
其中,com.mysql.jdbc.Driver是指MySQL的JDBC驱动中的Driver类。除了这个Driver类以外,还有另外一个Driver类,它存储在org.git.mm.mysql包下。因此也可以使用下面的forName()方法指定MySQL驱动,语句如下:
Class.forName("org.git.mm.mysql.Driver");
org.git.mm.mysql.Driver 与 com.mysql.jdbc.Driver 的作用完全相同。org.git.mm.mysql. Driver类的代码如下:
public class Driver extends com.mysql.jdbc.Driver {// Driver 类继承 com.mysql.jdbc.Driver 类 public Driver() throws SQLException {//抛出 SQLException 异常 super();//调用super()方法 } }
从上面的代码可以看出,org.git.mm.mysql.Driver继承了com.mysql.jdbc.Driver。需要注意的是,使用forName()方法时需要抛出ClassNotFountException异常。
说明:org.git.mm.mysql.Driver是早期的JDBC驱动程序。随着MySQL官方推出com.mysql.jdbc.Driver 以后,org.git.mm.mysql.Driver 慢慢地退出 了历史舞台。但是为了保证早期使用org.git.mm.mysqLDriver的Java代码的可用性,在新的JDBC驱动程序中添加了名为org.git.mm.mysql.Driver的类。
指定了MySQL驱动程序之后,就可以使用DriverManager类和Connnection接口来连接数据库。在DriverManager类中提供了getConnection()方法。getConnection()方法有3个输入参数,分别是url,user,password。这3个参数分别介绍如下。
url:指定JDBC的数据源。其基本形式是"jdbc:mysql:数据源"。数据源中包括了IP或主机名、端口号和数据库名。例如,jdbc:mysql://localhost:3306/hjh. localhost表示本地计算机;3306是MySQL的端口号;hjh是数据库名.
user:MySQL数据库的用户名
password:指定用户名的密码
getConnection()方法返回值的是Connection对象。下面是使用getConnection()方法的语句:
Connection connection=DriverManager.getConnection(url,user,password); //创建 Connection 对象
【示例19-1】下面是连接本地计算机MySQL数据库。MySQL使用默认端口3306, 连接的数据库是hjh,使用用户'root'来连接,其密码为'huang'。连接MySQL的语句如下:
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/hjh","root","huang");
通过这个语句就可以连接到MySQL的hjh数据库了。该语句也可以写成下面的形式:
String url="jdbc:mysql://localhost:3306/hjh"; //获取协议、IP和端口等信息 String user="root"; //获取数据库用户名 String password="huang";//获取数据库用户密码 Connection connection=DriverManager.getConnection(url, user, password);//创建Connection对象
这个语句要调用java.sql包下面的DriverManager类和Connection接口。Connection接口是在JDBC驱动中实现的。JDBC驱动的com.mysql.jdbc包下有Connection类。使用getConnection()方法时需要抛出SQLException异常。