【JDBC4.2】三、Statements
来源:互联网 发布:淘宝卖家怎么设置特价 编辑:程序博客网 时间:2024/05/04 03:37
数据库localhost:3306
DBname: test
表:student
本编博客包括Statement接口,以及它的子接口PreparedStatement和CallableStatement
Statement接口
Statement的获取
public class StatementTest { public static void main(String[] args) throws SQLException { Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=UTC", "root", "123456"); Statement statement = connection.createStatement(); }}
Statement的执行方法
如果是SQL查询语句,使用executeQuery()方法,返回一个ResultSet对象。
如果是DDL语句,修改性质的DML语句,使用executeUpdate(),返回修改的行数。
如果SQL语句未知,则使用execute()方法。
executeQuery方法
用法如下:
//...获取statement省略...ResultSet resultSet = statement.executeQuery("SELECT id,name,age FROM student");while (resultSet.next()){ //todo ...}
如果executeQuery执行的Sql没有返回一个ResultSet 对象,比如statement.executeQuery("INSERT INTO student('ABC123','Jack',12)");
,则会抛出SQLException
executeUpdate方法
int rows1 = statement.executeUpdate("UPDATE student SET age=17 WHERE name='Li'");int rows2 = statement.executeUpdate("DELETE FROM student WHERE name='Sam'");//...
如果executeUpdate返回一个ResultSet 对象,则会抛出SQLException
execute方法
execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。当执行某个已存储过程或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况。
某些驱动可能不支持多个ResultSet,可以使用Connection#getMetaData()#supportsMultipleResultSets()查看是否支持。
关闭Statement
关闭Connection虽然会关闭它创建的所有Statement,但是一个良好的编程习惯是手动关闭Statement
关闭Statement则不会关闭它创建的ResultSet所持有的资源(ResultSet会关闭),直到GC。
最好的做法是依次关闭ResultSet,Statement,Connection
resultSet.close();statement.close();connection.close();//完美!
PreparedStatement
PreparedStatement继承自Statement,具有设置SQL参数的能力。SQL语句能够被预编译,并且使用多次。它可以在SQL语句中使用“?”代替参数,执行的时候再指定。
创建一个PreparedStatement,并设置参数
String sql= "insert into student(id,name,age) values(?,?,?)"; ps=conn.prepareStatement(sql);ps.setString(1, "1234ABCD"); ps.setString(2, "Mary"); ps.setInt(3, 13);
使用setObject
ps.setObject(1,21,java.sql.Types.SHORT)//转换为SHORTps.setObject(1,21)//转换为默认的java.sql.Types.INTEGER
设置NULL参数
ps.setNull(2,java.sql.Types.VARCHAR)//设置varchar类型的参数威null
输出和输入数据描述
使用prepareStatement#getMetaData获取输出信息
使用prepareStatement#getParameterMetaData获取参数信息
CallableStatement
CallableStatement继承自PreparedStatement,用来执行存储过程并获取结果。
- 【JDBC4.2】三、Statements
- 【JDBC4.2】ResultSet
- JDK7新特性<三> JDBC4.1
- 【JDBC4.2】一、JDBC简介
- 【JDBC4.2】二、获取Connection
- 【JDBC4.2】JDBC中的Exception
- 【JDBC4.2】Wrapper和AutoCloseable
- python之三-statements and functions
- JDK6笔记(5)----JDBC4(2)
- 【JDBC4.2】JDBC事务&JTA事务
- Chapter 2 Native Types and Statements
- Lesson 2: If statements in C
- JDK6笔记(6)----JDBC4.0高级应用(2)
- JDBC进化史---从JDBC1.0到JDBC4.2
- 【JDBC4.2】JDBC规范中的连接池(未完待续)
- SQlite数据库的C编程接口(三) 预处理语句(Prepared Statements)
- iOS开发之SQLite--C语言接口规范(三)——Binding Values To Prepared Statements
- Professional JS(三-statements&function)&(四-primitive&reference type)&黑画(5-another road)
- The Knowledge of Linux-.-Day01
- 2017年值得一看的设计趋势(一)
- (2)Javascript之函数的多种调用方式
- 腻害了!我的console.log
- 三大特性之多态
- 【JDBC4.2】三、Statements
- 【C语言常识】原子性问题一
- 线程池ThreadPoolExecutor使用简介
- leetcode-412- Fizz Buzz
- as3+php通信笔记
- java基础要点
- android中FileObserver的运用
- Scala里面如何使用break和continue
- Mysql常用命令详解