您的位置:首页 > 数据库

SQL接口

2014-03-09 12:44 218 查看

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 类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: