概念
JDBC:java database connectivity SUN公司提供的一套操作数据库的标准规范。
JDBC与数据库驱动的关系:接口与实现的关系。
JDBC规范(掌握四个核心对象):
DriverManager:用于注册驱动
Connection: 表示与数据库创建的连接
Statement: 操作数据库sql语句的对象
ResultSet: 结果集或一张虚拟表
案例
import java.sql.*;
import java.util.Properties;
//原生JDBC demo
public class JDBC_Demo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
Properties properties = new Properties();
properties.setProperty("user", "root");
properties.setProperty("password", "123456");
//创建连接对象,第一个参数数据库的url,第二个参数账号密码等
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db2", properties);
//创建一个Statement对象,用于将SQL语句发送到数据库
Statement statement = connection.createStatement();
String sql = "select empno,ename,job from emp";
//执行给定的SQL语句,该语句返回一个ResultSet对象。
//注意:不能在PreparedStatement或CallableStatement上调用此方法。
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
System.out.println(resultSet.getString("empno"));
}
}
}
方法解析
createStatement()
创建一个Statement对象,用于将SQL语句发送到数据库。 不带参数的SQL语句通常使用Statement对象执行。 如果多次执行同一条SQL语句,则使用PreparedStatement对象可能会更有效。
默认情况下,使用返回的Statement对象创建的结果集的类型为TYPE_FORWARD_ONLY,并发级别为CONCUR_READ_ONLY。 可以通过调用确定所创建结果集的可保存性.
resultSet.next()
将光标从当前位置向前移动一行。 ResultSet游标最初位于第一行之前; 对该方法的第一次调用next使第一行成为当前行; 第二个调用使第二行成为当前行,依此类推。
当对next方法的调用返回false时,光标将位于最后一行之后。 任何需要当前行的ResultSet方法的调用都会导致抛出SQLException。 如果结果集类型为TYPE_FORWARD_ONLY,则由供应商指定其JDBC驱动程序实现将返回false还是在后续对next的调用上引发SQLException。
如果为当前行打开了输入流,则对next方法的调用将隐式将其关闭。 读取新行时,将清除ResultSet对象的警告链。
总结
由于原生jdbc用起来比较繁琐,一般使用三方库进行简化,比如连接池C3P0库以及方便处理查询结果的DButils库.