Java_JDBC使用Statement和PreparedStatement
Posted 小企鹅推雪球!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java_JDBC使用Statement和PreparedStatement相关的知识,希望对你有一定的参考价值。
文章目录
Statement接口完整的代码样例
package com.company;
import com.microsoft.sqlserver.jdbc.SQLServerDriver;
import java.sql.*;
public class JDBC_04 {
public static void main(String[] args) throws Exception {
final String JDBC_SqlDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; // java连接 sql server的驱动
final String DatabasesUrl = "jdbc:sqlserver://localhost:1433;DatabaseName=stu"; // Java连接指定数据库地址的语句
String USER = "SA"; // 登录到数据库的用户名
String PASS = "123456"; // 登录密码
// 第二步 注册驱动程序,注册驱动程序有两种方式:
// 第一种使用 Class.forName() 注册驱动
// 第二种使用 registerDriver() 注册驱动
// 第一种注册方法:
// Class.forName 注册驱动程序的方式是将驱动程序的类文件加载到内存中的过程,可以将其用作JDBC接口的实现,只需要在程序中注册一次即可
// Class.forName(JDBC_SqlDriver);
// 第二种注册方法:
// DriverManager.registerDriver()
Driver myDriver = new SQLServerDriver();
DriverManager.registerDriver(myDriver);
// 第三部:打开连接 :
System.out.println("正在连接数据库。。。");
Connection conn = null; // 创建连接对象
conn = DriverManager.getConnection(DatabasesUrl,USER,PASS);
// 第四步:执行sql语句
System.out.println("连接成功,准备执行sql语句");
// 创建 Statement 对象,用于执行sql语句
Statement st;
st = conn.createStatement(); // 创建执行对象Statement执行SQL语句,由Connection对象产生
// 定义执行的sql 语句
String sql = "SELECT TOP(10) name, sex, nation From stuInfo"; // 查询10条数据
// executeQuery() 方法用于在数据库中执行 sql 语句,同时将数据库响应的 sql 语句结果存放在 ResultSet 类对象中供我们使用
ResultSet rs = st.executeQuery(sql);
// int Sta = st.executeUpdate(sql); // 返回受 sql 语句执行影响的行数,使用 exceuteUpdate 执行预期会影响多行的 SQL 语句,例如 insert,update,delete
// Boolean STA = st.execute(sql); // 如果可以检索到 ResultSet对象,则返回一个布尔值,true ,否则返回 dalse
// System.out.println("受影响行数:"+Sta);
// System.out.println(STA);
// 第五步:从结果集种提取数据,可以使用 getXXX()方法来检索数据
while (rs.next()){
String name = rs.getString("name");
String sex = rs.getString("sex");
String nation = rs.getString("nation");
System.out.println("name: " + name +"|" + "sex: " +"|" + sex+ "nation:" +"|" + nation);
}
// 第六步:清理资源
rs.close();//清理 返回结果集所占用的资源
st.close();// 清理 Statement 对象所占用的资源
conn.close(); // 清理连接数据库所占用的资源
System.out.println("访问数据库完毕");
}
}
Java_Statement接口
Statement
接口用于对数据库进行通用访问,可以运行静态SQL语句但是使用Statement
接口不能接收参数- ,需要使用
Connection
对象的CreateStatement()
方法创建Statement对象
// 第三部:打开连接 :
System.out.println("正在连接数据库。。。");
Connection conn = null; // 创建连接对象
conn = DriverManager.getConnection(DatabasesUrl,USER,PASS);
// 第四步:执行sql语句
System.out.println("连接成功,准备执行sql语句");
// 创建 Statement 对象,用于执行sql语句
Statement st;
st = conn.createStatement(); // 创建执行对象Statement执行SQL语句,由Connection对象产生
// 定义执行的sql 语句
String sql = "SELECT TOP(10) name, sex, nation From stuInfo"; // 查询10条数据
// executeQuery() 方法用于在数据库中执行 sql 语句,同时将数据库响应的 sql 语句结果存放在 ResultSet 类对象中供我们使用
ResultSet rs = st.executeQuery(sql);
Java_Statement对象的三种方法
Statement
对象,在使用Statement
对象执行SQL
语句之前,需要使用Connection
对象的createStatement()
方法创建一个Statement
对象Statement stmt = conn.createStatement();
创建执行对象Statement
执行SQL语句,由Connection
对象产生- 在创建
Statement
对象后,可以用来执行 SQL 语句
Statement 对象可以使用三个方法
boolean execute(String SQL ):
如果可以检索到ResultSet
对象,则返回一个布尔值,true ,否则返回 false
int executeUpdate(String SQL ):
返回受sql
语句执行影响的行数,使用exceuteUpdate
执行预期会影响多行的 SQL 语句,例如insert,update,delete
ResultSet executeQuery( String SQL ):
返回一个ResultSet
对象,获得执行 SQL 的结果集,和select
语句类似
Java_JDBC关闭Statement对象
- 关闭
Statement
对象用户来节省资源,关闭时应该注意,先关闭Statement
对象,然后再关闭Connection
对象,原因是如果先关闭Connection
对象,也会同时关闭Statement
对象,但是应该始终显式的关闭Statement
对象
// 第六步:清理资源
rs.close();//清理 返回结果集所占用的资源
st.close();// 清理 Statement 对象所占用的资源
conn.close(); // 清理连接数据库所占用的资源
PreparedStatement对象实例
package com.company;
import com.microsoft.sqlserver.jdbc.SQLServerDriver;
// PreparedStatement对象样例代码
import java.sql.*;
public class JDBC_05 {
public static void main(String[] args) throws Exception {
final String JDBC_SqlDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; // java连接 sql server的驱动
final String DatabasesUrl = "jdbc:sqlserver://localhost:1433;DatabaseName=stu"; // Java连接指定数据库地址的语句
String USER = "SA"; // 登录到数据库的用户名
String PASS = "123456"; // 登录密码
// 第二步 注册驱动程序,注册驱动程序有两种方式:
// 第一种使用 Class.forName() 注册驱动
// 第二种使用 registerDriver() 注册驱动
// 第一种注册方法:
// Class.forName 注册驱动程序的方式是将驱动程序的类文件加载到内存中的过程,可以将其用作JDBC接口的实现,只需要在程序中注册一次即可
// Class.forName(JDBC_SqlDriver);
// 第二种注册方法:
// DriverManager.registerDriver()
Driver myDriver = new SQLServerDriver();
DriverManager.registerDriver(myDriver);
// 第三部:打开连接 :
System.out.println("正在连接数据库。。。");
Connection conn = null; // 创建连接对象
conn = DriverManager.getConnection(DatabasesUrl,USER,PASS);
// 第四步:执行sql语句
System.out.println("连接成功,准备执行sql语句");
// 创建 Statement 对象,用于执行sql语句
PreparedStatement st;
// 定义执行的sql 语句
String sql = "UPDATE stuInfo set sex =? WHERE name=?"; // 定义可接收参数的SQL语句
st = conn.prepareStatement(sql); // 此时的sql 执行的是 UPDATE stuInfo set sex =? WHERE name=?
st.setString(1,"男");
st.setString(2,"罗晨曦");
int rows = st.executeUpdate(); // 查看 UPDATE 语句所影响的行数
System.out.println(rows);
// executeQuery() 方法用于在数据库中执行 sql 语句,同时将数据库响应的 sql 语句结果存放在 ResultSet 类对象中供我们使用
sql= "SELECT TOP(10) * FROM stuInfo";
st = conn.prepareStatement(sql); // 此时的sql 执行的是 SELECT TOP(10) * FROM stuInfo
ResultSet rs = st.executeQuery();
// 第五步:从结果集种提取数据,可以使用 getXXX()方法来检索数据
while (rs.next()){
String name = rs.getString("name");
String sex = rs.getString("sex");
String nation = rs.getString("nation");
System.out.println("name: " + name +"|" + "sex: " + sex+"|" + "nation:" +"|" + nation);
}
// 第六步:清理资源
rs.close();//清理 返回结果集所占用的资源
st.close();// 清理 Statement 对象所占用的资源
conn.close(); // 清理连接数据库所占用的资源
System.out.println("访问数据库完毕");
}
}
Java_JDBC的PreparedStatement对象
PreparedStatement
接口扩展可Statement接口
,PreparedStatement
对象可以动态的提供/接受参数
创建PreparedStatement对象
// 创建 Statement 对象,用于执行sql语句
PreparedStatement st;
// 定义执行的sql 语句
String sql = "UPDATE stuInfo set sex =? WHERE name=?"; // 定义可接收参数的SQL语句
st = conn.prepareStatement(sql); // 此时的sql 执行的是 UPDATE stuInfo set sex =? WHERE name=?
st.setString(1,"男");
st.setString(2,"罗一");
int rows = st.executeUpdate(); // 查看 UPDATE 语句所影响的行数
System.out.println(rows);
// executeQuery() 方法用于在数据库中执行 sql 语句,同时将数据库响应的 sql 语句结果存放在 ResultSet 类对象中供我们使用
sql= "SELECT TOP(10) * FROM stuInfo";
st = conn.prepareStatement(sql); // 此时的sql 执行的是 SELECT TOP(10) * FROM stuInfo
ResultSet rs = st.executeQuery();
- JDBC中的所有参数都是
?
符号作为占位符,被称为参数标记 - 在执行SQL语句之前,必须为每个参数(占位符)提供值。
String sql = "UPDATE stuInfo set sex =? WHERE name=?"; // 定义可接收参数的SQL语句
st = conn.prepareStatement(sql); // 此时的sql 执行的是 UPDATE stuInfo set sex =? WHERE name=?
st.setString(1,"男");
st.setString(2,"罗一");
setXXX()
方法将值绑定到参数,其中XXX
表示要绑定到输入参数的值的Java数据类型,如果没有提供绑定值,会抛出SQLException
的异常- 每个参数标记是顺序位置的引用,第一个标记表示位置
1
,第二个标记为位置2
,以此类推,与数组的索引类似(数组的索引以0
开始) PreparedStatement
对象同样可以使用excute()
,executeQuery()
和executeUpdate()
方法
关闭PreparedStatement对象
- 同样也是需要显式的关闭
PreparedStatement
对象,确保以争取顺序清理资源
以上是关于Java_JDBC使用Statement和PreparedStatement的主要内容,如果未能解决你的问题,请参考以下文章
Java连载131-Connection接口和Statement接口