JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术。
一、JDBC基础知识
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制。
JDBC API可以作为连接Java应用程序与各种关系数据库的纽带,在带来方便的同时也有负面影响,以下是JDBC的优、缺点。
优点如下:
- 操作便捷:JDBC使得开发人员不需要再使用复杂的驱动器调用命令和函数;
- 可移植性强:JDBC支持不同的关系数据库,所以可以使同一个应用程序支持多个数据库的访问,只要加载相应的驱动程序即可;
- 通用性好:JDBC-ODBC桥接驱动器将JDBC函数换成ODBC;
- 面向对象:可以将常用的JDBC数据库连接封装成一个类,在使用的时候直接调用即可。
二、JDBC连接数据库的流程及其原理
1、在开发环境中加载指定数据库的驱动程序:
在后面示例中:我使用的数据库是mysql(具体可以到:http://dev.mysql.com/downloads/windows/installer/),所以驱动也要去下载最新的驱动程序(我下载的是:mysql-connector-java-5.0.8.zip)开发环境我用的是Eclipse luna。
2、在Java程序中加载驱动程序:
在Java程序中,可以通过 “Class.forName(“指定数据库的驱动程序”)” 方式来加载添加到开发环境中的驱动程序,例如加载MySQL的数据驱动程序的代码为: String driver=“com.mysql.jdbc.Driver”;
Class.forName(driver);
3、创建数据连接对象:
通过DriverManager类创建数据库连接对象Connection。DriverManager类作用于Java程序和JDBC驱动程序之间,用于检查所加载的驱动程序是否可以建立连接,然后通过它的getConnection方法,根据数据库的URL、用户名和密码,创建一个JDBC Connection 对象。如:Connection connection = DriverManager.geiConnection(“连接数据库的URL", "用户名", "密码”)。其中,URL=协议名+IP地址(域名)+端口+数据库名称;用户名和密码是指登录数据库时所使用的用户名和密码。具体示例创建MySQL的数据库连接代码如下:
String url="jdbc:mysql://127.0.0.1:3306/db_database25";
String user="root";
String password="18822";
Connection conn=DriverManager.getConnection(url, user, password);
4、创建Statement对象:
Statement 类的主要是用于执行静态 SQL 语句并返回它所生成结果的对象。通过Connection 对象的 createStatement()方法可以创建一个Statement对象。例如:Statement statament = connection.createStatement(); 具体示例创建Statement对象代码如下:
Statement statement=conn.createStatement();
5、调用Statement对象的相关方法执行相对应的 SQL 语句:
通过execuUpdate()方法用来数据的更新,包括插入和删除等操作;
通过调用Statement对象的executeQuery()方法进行数据的查询,而查询结果会得到 ResulSet对象,ResulSet表示执行查询数据库后返回的数据的集合,ResulSet对象具有可以指向当前数据行的指针。通过该对象的next()方法,使得指针指向下一行,然后将数据以列号或者字段名取出。如果当next()方法返回null,则表示下一行中没有数据存在。使用示例代码如下:
String sql="select * from tb_category";
ResultSet rs = statement.executeQuery(sql );
while(rs.next()){
.....................................
}
6、关闭数据库连接:
使用完数据库或者不需要访问数据库时,通过Connection的close() 方法及时关闭数据连接。conn.close();
三、2014/10/12我的实践示例:
实验环境:window 7, mysql 5.6(workbench 6.1), eclipse luna (4.4.0)
实验步骤:
1下载驱动程序:
前往mysql官网(http://dev.mysql.com/downloads/connector/)下载驱动程序,我这选择的是(Connector/J),如下图所示,按照我圈了的步骤去下载,解压下载到的压缩包(mysql-connector-java-5.0.8.zip),注意哦,我们最终需要的是:mysql-connector-java-5.0.8-bin文件啊!!!!!
2 附加数据库:
我这里采用以前的数据库db_database25,但是还没有附加哦。如下图所示:按照图中所示步骤进行,附加成功都会在Schemas中看到我附加的数据库名,然后可以通过一个简单的查询语句来进一步检查(select * from db_database25.tb_category)。
3 在Eclipse下创建项目并添加mysql驱动程序:
我这新建了一个java项目,命名为:trainSysTest,然后再把下载到的mysql驱动程序(mysql-connector-java-5.0.8-bin)添加到工程的build path中,添加如下图所示:
具体代码:
package trainSysTest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MysqlConntest1 {
public static void main(String[] args){
String driver="com.mysql.jdbc.Driver";
String url="jdbc:mysql://127.0.0.1:3306/db_database25";
String user="root";
String password="18822";
try {
Class.forName(driver);//加载驱动程序
Connection conn=DriverManager.getConnection(url, user, password);
if(!conn.isClosed())
System.out.println("Successed connecting to the database!");
Statement statement=conn.createStatement();
String sql="select * from tb_category";
ResultSet rs=statement.executeQuery(sql);
System.out.println("-----------------------");
System.out.println("执行结果如下所示:");
System.out.println("------------------------");
while(rs.next()){
int id=rs.getInt("id");
String name1=rs.getString("name");
String des=rs.getString("description");
String time=rs.getString("createtime");
System.out.println(id+""+name1+""+des+""+time+"");
//System.out.println(name1+""+des+""+time+"");
}
rs.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}