SQL接口

1. SQL 声明接口:Statement
在 java.sql 包中定义的 Statement 类代表要在数据库连接上执行的 SQL 语句,并且提供执行方法。
Connection 接口提供了生成 Statement 对象的方法。在一般情况下,我们通过 connection.createStatement()
方法就可以得到 Statement 的实例。
有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器: Statement 、
PreparedStatement (它从 Statement 继承而来)和 CallableStatement (它从 PreparedStatement 继承而来)。
该接口提供了可以被执行的基本的 SQL 语句,作为提高性能的一项措施, PreparedStatement 对象提
供了可以与查询信息一起预编译的一种语句类型。CallableStatement 对象用来封装数据库中存储过程的
执行。
Statement 提供了许多方法,最常用的方法如下。
  execute()  运行语句,返回是否有结果集。
  executeQuery()  运行查询语句,返回 ReaultSet 对象。
  executeUpdate()  运行更新操作,返回更新的行数。
  addBatch()  增加批处理语句。
  executeBatch()  执行批处理语句。 
  clearBatch()  清除批处理语句。
Statement 对象用于执行不带参数的简单 SQL 语句,它的典型使用如下所示。

Connection conn = DatabaseConnection.getConnection();    //获得数据库连接对象
Statement stmt = conn.createStatement();            //创建 SQL 语句对象
ResultSet rst = stmt.executeQuery(“select * from sometable”);  //执行查询,获得查询结果集

PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句,它的典型使用如下所示。

Connection conn = DatabaseConnection.getConnection();  //获得数据库连接对象
//创建预编译语句对象
PrepareStatement pstmt = conn.prepareStatement(“insert into user_info values(?,?,?,?,?,?,?)”;
pstmt.setString(1.”hellking”);              //设置预编译 SQL 语句中的第一个参数
pstmt.setInt(2,20);                  //设置预编译 SQL 语句中的第二个参数
pstmt.setBoolean(3,true);                //设置预编译 SQL 语句中的第三个参数
...
pstmt.executeUpdate();                //执行 SQL 语句
...
CallableStatement 对象用于执行对数据库已存储过程的调用,它的典型使用如下所示。

Connection conn = DatabaseConnection.getConnection();  //获得数据库连接对象
String strSQL = “{call demo_account(?,?,?,?,?,?,?)}”;
java.sql.CallableStatement.sqlStmt = conn.prepareCall(strSQL);
sqlStmt.setString(1,”userid_3”);            //设置调用存储过程 SQL 语句的第一个参数
sqlStmt.setString(2,”userid_1”);            //设置调用存储过程 SQL 语句的第二个参数
...
int I = sqlStmt.executeUpdate();            //执行存储过程
2.  查询结果接口:ResultSet
在 Statement 对象执行 SQL 语句时,有时会返回 ResultSet 结果集。 ResultSet 往往包含的是查询的结
果集。此接口抽象了运行 select 语句的结果,提供了逐行访问结果的方法,通过它访问结果的不同字段。
结果集通常是一张表,其中有查询所返回的列标题及相应的值。
通过 ResultSet.next()方法把当前的指针向下移动一位。最初它位于第一行之前,因此第一次调用 next
将把指针置于第一行上,使它成为当前行。随着每次调用 next()导致指针向下移动,按照从上至下的次
序获取 ResultSet 行。通常情况下,可使用如下的代码遍历 ResultSet 对象内的每一行数据:
...
try{
Connection conn = DatabaseConnection.getConnection();
Statement stmt = conn.createStatement(); 
ResultSet rst = stmt.executeQuery(“select * from User_Info”);
while(rs.next()){
//显示结果集
...
}
}
读取 ResultSet 对象中每一行数据的方法是调用它的 getXXX()方法,XXX 表示 Java 的数据类型。
在使用该方法读取数据时,应该为它指定要读取的列。指定读取的列有两种方法:一种方法是使用列的
序号,另一种方法是使用列名。例如,结果集的第 2 列的列名为“StuName”,则下面的两行代码是等
价的。

String name = rs.getString(2);
String name = rs.getString(“StuName”);

如果 XXX 所代表的数据类型与结果集中对应列的数据类型不匹配,将会发生类型转换。例如,结
果集中“StuID”列的数据类型为 int,那么调用 getString(“StuID”)读取 StuID 一列的信息时,将会把
结果集中的 int 类型转化为 String 类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值