JDBC 是Java数据库连接技术,Java程序与数据库进行交互就必须要通过JDBC来进行。
JDBC中包含了API :定义一系列的访问和操作数据的接口与类,在Java.sql包中。
JDBC中还有一个JDBC DriverManager:这是一个驱动管理类
JDBC驱动,这些驱动是数据库厂商提供,为不同的编程语言而做好的接口。
JDBC的访问步骤:
1. 加载驱动:需要驱动才能建立与数据库的连接通道。
Class.forName("com.mysql.jdbc.Driver");
2. 建立连接:打通Java程序与数据库之间的通道。
第一个参数表示:连接的主机地址,1219是数据名,characterEncoding=utf-8表示向数据库传递中文时的编码,避免乱码问题。
第二个参数表示:用户名,
第三个参数表示:密码。
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/1219?characterEncoding=utf-8",
"root", "");
3. 执行SQL语句:针对数据库的数据进行检索。
Statement st = null; // 命令对象
st =conn.createStatement();//根据连接创建命令对象
4. 操作查询结果,或获取增、删、改的操作结果。
//执行增删改的SQL,executeUpdate方法返回受影响行数
int row= st.executeUpdate(sql);
//执行查询SQL,返回结果集
ResultSet rs = null; // 结果集
rs = st.executeQuery(sql);
//循环读取每一条数据
while(rs.next()) {
// 如何取得每一行数据里面的值,根据 列名、索引两种方式取
System.out.print(rs.getString(1)+ "\t");
System.out.print(rs.getString(2)+ "\t");
System.out.print(rs.getString(3)+ "\t");
System.out.print(rs.getString(4)+ "\t");
System.out.println(rs.getString(5)+ "\t");
}
5. 释放资源。
调用对象的close()方法,关闭所有资源
if(rs != null) rs.close();
if(st != null) st.close();
if(conn!=null) conn.close();
PreparedStatement对象
以避免SQL注入式攻击,安全性高,效率也高,因为针对SQL进行了预编译。
继承自Statement接口,能够对SQL语句进行预编译。运用一个?占位符来组装SQL语句,使SQL语句的可读性更强.
ps =conn.prepareStatement(sql); //预编译SQL指令
//为SQL语句中的占位符赋值 索引从1开始
ps.setString(1,userName); //表示为第 1 个占位符赋值
ps.setString(2,pwd); //表示为第 2 个占位符赋值
rs =ps.executeQuery();
建议使这个对象,少用Statement对象,性能高,安全性高,SQL可读性高。