Statement 和Resultset笔记

Statement接口

statement是java中的一个连接数据库的一个重要接口,在建立与数据库的连接之后,向数据库发送执行的sql语句(执行不带参数的简单sql)

JDBC中有三种Statement 接口
1.Statement :执行不带参数的简单sql
2.PreparedStatement (PreparedStatement 继承Statment) :执行动态的sql语句
3.CallableStatement (CallableStatement继承PreparedStatement ) :执行对数据库的存储过程的调用

Statement的常用方法

1.excute(String sql):执行静态的select语句,语句可能返回多个结果集
2.executeQuery(String sql):执行给定的select语句,语句返回单个Resultset对象
3.excutebatch():将一批命令交给数据库执行,如果全部命令执行成功,则返回更新计数组成的数组。数组元素的顺序与添加sql语句的顺序对应
4.clearbatch():清空此Statement对象的命令列表
5.addBatch(String sql):将给定的sql命令添加到此Statement对象的当前命令列表中。如果程序不支持批量处理,将抛出异常
6. executeUpdate();用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
7.close():释放Statement实例占用的数据库和JDBC资源

PreparedStatement接口

PreparedStatement接口用来动态的执行SQL语句。通过PreparedStatement实例执行的动态SQL语句,将被预编译并保存到PreparedStatement实例中,从而可以反复地执行该SQL语句

PreparedStatement接口的常用方法

1.executeQuery():在此PreparedStatement对象中执行SQL查询,并返回该查询生成的ResultSet对象
2.excuteUpate():执行前面包含参数的动态INSERT,UPDATE或DELETE语句,返回一个整型
3.setXXX(int dex,object o);XXX为设置参数的类型,object的类型对应XXX的类型(int,FLoat,Long,Double,Boolean,Date,String,NULL)
4.clearParameters():清除当前所有参数的值

预处理语句

通过Connection对象的PreparedStatement(String sql)方法对SQL语句进行预处理,生成数据库底层的内部命令,并将该命令封装在PreparedStatement对象中。通过调用相应方法,执行底层数据库命令。
预处理可以使用通配符“ ”来代替任何字段值

sql=con.preparedStatement("select *from tb_stu where id="?");

然后通过setXXX来设置通配符所表示的值

sql.setint(1,2);
//1表示从左到右的第一个通配符,2表示设置的通配符的值

注:setXXX使用参数匹配的方法,还可以setObject()方法为各种类型的参数赋值 如:sql.setObject(2,1);

Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法;而 CallableStatement 添加了处理 OUT 参数的方法。

ResultSet接口

ResuleSet接口类似一个临时表,用来暂时存放数据库查询操作所获得的结果集。并且Result还提供当前数据行的指针,指针刚开始指向第一行,通过next()方法移向下一行

ResultSet接口常用方法

1.getXXX():获得指定列值,参数为Int型即为第几列,参数为String即为指定列的列名
2.first(),last(),next()
3.absolute(int index):将指针移到Result给编号的行
4.upadteXXX():用XXX类型更新指定列
updateObject()
5.insertRow():将插入行插入到数据库
upateRow():将当前行内荣同步到数据表
deleteRow():删除当前行,但并不同步到数据库中,在close()方法后同步到数据库中
6.getrow();获得当前行的索引号

用updateXXX()更新指定列。但该方法没有对数据同步到数据库中,需要执行updateRow()或insertRow()方法更新数据库

ResultSet的常用参数

如果Result没有设立参数,那么它的使用是有局限性的,它只能读一次,只能向前读对象,只能读对象
1.TYPE_SCROLL_SENSITIVE:双向滚动,并及时跟踪数据库的更新,以便更改ResultSet中的数据
2.TYPE_SCROLL_INSENSITIVE:双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
3.TYPE_FORWORD_ONLY:只可向前滚动。缺省类型,不会受到其他用户对该数据库所作更改的影响。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。
4.并发性参数
CONCUR_READ_ONLY: 不允许更新
CONCUR_UPDATABLE: 允许并发同步更新数据
5.事务处理参数
HOLD_CURSORS_OVER_COMMIT: ResultSet的数据仍然可以被存取在commit 或者 rollback之后.
CLOSE_CURSORS_AT_COMMIT: ResultSet的数据被抛弃在 commits 或者 rollbacks执行后.

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页