NingG +

JDBC,Statement、PreparedStatement

几点:

todo:

todo 参考:

JDBC

JDBC(Java Database Connectivity),Java 数据库连接API,本质是Sun公司定义的一套接口规范,即,通过调用哪些确定的方法即可实现对数据库的操作。JDBC产生的原因很简单:

Tips:

JDBC就是Java操作数据库的API,是Java标准类库的扩展,目的:JDBC开发的java程序能够跨平台运行,不受数据库的限制。

JDBC实现原理

JDBC由 3 部分实现:

此外,不同数据库厂商,根据自身特点,提供具体JDBC Driver的实现,这一JDBC Driver满足JDBC Driver API即可。这样JDBC Driver就可以注册到JDBC Driver Manager了。

JDBC Driver Manager可确保使用正确的JDBC Driver来访问每个数据源。JDBC Driver Manager能够支持连接到多个异构数据库的多个并发的JDBC Driver。Java应用程序中,只需要调用JDBC API就可以实现对异构数据库的访问,每次切换数据库时,只需要改变JDBC Driver Manager加载的JDBC Driver名称即可,不需要修改Java代码

另外,ODBC是Microsoft为C语言访问数据库提供的一套编程接口。如果数据库供应商只提供了ODBC驱动器。那么可以通过JDBC-ODBC桥来进行连接。

Java操作数据库的基本过程

Java操作MySQL数据库的基本过程:

添加依赖的JDBC Driver jar包

直接从JDBC Driver for MySQL中下载安装程序,或者从Maven中央仓库 中下载mysql-connector-java-5.1.34.jar,并将此jar包添加到 Build Path 中。

如果使用Maven管理工程,则在pom.xml中添加如下依赖:

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.34</version>
</dependency>

编写示例代码

按照上述 5 个步骤,创建连接、编写SQL、执行、处理结果、释放连接,具体示例代码如下:

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;


public class TestJDBC {
	
	public static void main(String[] args) {
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		String driverClassName = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://168.7.2.167:3306/studentmgr";
		String username = "root";
		String password = "root";
		
		try{
			Class.forName(driverClassName);	// 加载JDBC Driver
			conn = DriverManager.getConnection(url, username, password);// 建立连接
			
			st = conn.createStatement();// 创建SQL
			String sql = "SELECT * FROM STUDENT";
			rs = st.executeQuery(sql);// 执行SQL
			
			while (rs.next()) {	// 处理结果
				System.out.println(rs.getString("name"));
			}
		} catch(Exception exp){
			exp.printStackTrace();
		} finally {
			
			try {
				if (rs != null) {
					rs.close();
				}
				
				if(st != null){
					st.close();
				}
				
				if(conn != null){
					conn.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

Tips:

上述操作涉及的DriverManager、Connection、Statement、ResultSet,都是java.sql.*

Statement、PreparedStatement之间差异

Statement的用法:

Statement st = con.createStatement();
String query = "INSERT INTO Testing(Id) VALUES(" + 2 + ")";	// 拼接SQL
st.executeUpdate(query);

PreapredStatement的用法:

PreparedStatement pst = con.prepareStatement("INSERT INTO Authors(Name) VALUES(?)");
pst.setString(1, author);
pst.executeUpdate();

总结一下两者之间的差异:

参考来源

Top