目录
JDBC简介
JDBC(Java Data Base Connectivity)即java数据库连接,是Java核心类库的一部分,提供了操作多种关系数据库提供统一访问,是一种用于执行SQL语句的Java API。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
JDBC有两种,一种原sun公司提供的数据库连接;一种是由微软提供的JDBC数据库连接。JDBC访问不同的数据库使用的JDBC API都有所不同,虽然统称为JDBC。如:访问sql server数据库的JDBC,是不能访问oracle数据库的,同理也是也不访问MySQL、db2、Informix数据库等。只是访问方式不同,对数据库的操作依然是使用sql语句操作。
JDBC的使用
经常使用JDBC进行如下操作:
(1)与数据库建立连接。
(2) 向已连接的数据库发送SQL语句。
(3)处理SQL语句返回结果
数据库连接方式
和数据库连接的方式有两种,分别是:
(1)建立JDBC-ODBC桥接器
关于如何使用,JDBC-ODBC桥接器操作mysql,请看这篇博客:
http://blog.sina.com.cn/s/blog_81c33221010124v2.html
关于如何使用JDBC-ODBC桥接器操作sql server,请看这篇博客:
http://www.cnblogs.com/Howe-Young/p/4082205.html
(2)加载纯Java的数据库驱动程序
下面这要讲加载纯Java的数据库驱动程序,这种方法应用较广泛,但是需要下载相应的驱动程序包,因为不同的数据库的连接代码可能不同,连接不同的数据库,加载的驱动程序也可能不同。本文将以MySQL数据库为例来讲解连接数据库的过程。
案例程序
首先,下载驱动 mysql-connector-java-5.1.35-bin.jar
以下是一个查询的案例,程序注释很清楚。
package crawlerTest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/*
* 合肥工业大学 管理学院 qianyang 1563178220@qq.com
*/
public class MysqlConnectionTest {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Connection connection=null; //数据库连接的获取
Statement stmt=null; //创建Statement对象
ResultSet rst=null; //创建数据库执行对象
String driver="com.mysql.jdbc.Driver"; //数据库驱动
String dbURL="jdbc:mysql://127.0.0.1:3306/test"; //操作的数据库地址,端口及库名
String user = "root"; //数据库用户名
String password = "112233"; //数据库密码
Class.forName(driver); //驱动注册
try {
connection = DriverManager.getConnection(dbURL,user,password);
} catch (SQLException e) {
e.printStackTrace();
}
//连接数据库
stmt = connection.createStatement();
String sql="select * from auto_forum_comments limit 1,100"; //需要查询的语句
// Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
rst=stmt.executeQuery(sql);
while (rst.next()) {
System.out.println(rst.getString(6)); //取第6列数据
}
rst.close();
stmt.close();
connection.close();
}
}
Statement和PreparedStatement的区别
Statement和PreparedStatement都可以用于把sql语句从java程序中发送到指定数据库,并执行sql语句,但是他们也存在区别:
(1)直接使用Statement,驱动程序一般不会对sql语句作处理而直接交给数据库;使用PreparedStatement,形成预编译的过程,并且会对语句作字符集的转换中如此。
如此,有两个好处:对于多次重复执行的语句,使用preparedStatement效率会更高一点,并且在这种情况下也比较适合使用batch;另外,可以比较好地解决系统的本地化问题。
(2)PreparedStatement还能有效的防止危险字符的注入,也就是sql注入的问题。