Statement接口

接口
接口及它的子接口和 。
接口中定义了执行SQL语句的方法 , 这些方法不支持参数输入 , 
接口中增加了设置SQL参数的方法 , 
接口继承自 , 在此基础上增加了调用存储过程以及检索存储过程调用结果的方法 。
@Testpublic void statementTest() throws SQLException {Connection connection = DriverManager.getConnection("jdbc:mysql://xxxx:3306/demo","xxxx","xxxx");//简单创建Statement statement = connection.createStatement();//重载方法/*** resultSetType – one of the following ResultSet constants:*ResultSet.TYPE_FORWARD_ONLY : 表示ResultSet对象类型的常量 , 该对象的光标只能向前移动 。*ResultSet.TYPE_SCROLL_INSENSITIVE, : 表示ResultSet对象的类型的常量 , 该对象是可滚动的 , 但通常对ResultSet基础数据的更改不敏感 。*or ResultSet.TYPE_SCROLL_SENSITIVE : 表示ResultSet对象的类型的常量 , 该对象是可滚动的 , 通常对ResultSet基础数据的更改敏感 。* resultSetConcurrency – one of the following ResultSet constants:*ResultSet.CONCUR_READ_ONLY: 表示不能更新的ResultSet对象的并发模式的常量 。*or ResultSet.CONCUR_UPDATABLE: 指示可更新的ResultSet对象的并发模式的常量 。* resultSetHoldability – one of the following ResultSet constants:*ResultSet.HOLD_CURSORS_OVER_COMMIT: 表示具有此可保持性的打开的ResultSet对象在提交当前事务时将保持打开的常量 。*or ResultSet.CLOSE_CURSORS_AT_COMMIT: 指示具有此可保持性的打开ResultSet对象的常量将在提交当前事务时关闭 。*/Statement statement1 = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE,ResultSet.HOLD_CURSORS_OVER_COMMIT);//重载方法/*** resultSetType – one of the following ResultSet constants:*ResultSet.TYPE_FORWARD_ONLY : 表示ResultSet对象类型的常量 , 该对象的光标只能向前移动 。*ResultSet.TYPE_SCROLL_INSENSITIVE, : 表示ResultSet对象的类型的常量 , 该对象是可滚动的 , 但通常对ResultSet基础数据的更改不敏感 。*or ResultSet.TYPE_SCROLL_SENSITIVE : 表示ResultSet对象的类型的常量 , 该对象是可滚动的 , 通常对ResultSet基础数据的更改敏感 。* resultSetConcurrency – one of the following ResultSet constants:*ResultSet.CONCUR_READ_ONLY: 表示不能更新的ResultSet对象的并发模式的常量 。*or ResultSet.CONCUR_UPDATABLE: 指示可更新的ResultSet对象的并发模式的常量 。*/Statement statement2 = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.HOLD_CURSORS_OVER_COMMIT);}
的主要作用是与数据库进行交互 , 该接口中定义了一些数据库操作以及检索SQL执行结果相关的方法 , 具体如下:

Statement接口

文章插图
注意:
接口继承自接口 , 在接口的基础上增加了参数占位符功能 。接口中增加了一些方法 , 可以为占位符设置值 。的实例表示可以被预编译的SQL语句 , 执行一次后 , 后续多次执行时效率会比较高 。使用实例执行SQL语句时 , 可以使用“?”作为参数占位符 , 然后使用接口中提供的方法为占位符设置参数值 。
@Testpublic void preparedStatementTest() throws SQLException {Connection connection = DriverManager.getConnection("jdbc:mysql://xxxx:3306/demo","xxxx","xxxx");PreparedStatement preparedStatement = connection.prepareStatement("select * from demo where id = ?");//重载/*** sql – a String object that is the SQL statement to be sent to the database; may contain one or more '?' IN parameters* resultSetType – a result set type; one of*ResultSet.TYPE_FORWARD_ONLY, : 表示ResultSet对象类型的常量 , 该对象的光标只能向前移动 。*ResultSet.TYPE_SCROLL_INSENSITIVE, or : 表示ResultSet对象的类型的常量 , 该对象是可滚动的 , 但通常对ResultSet基础数据的更改不敏感 。*ResultSet.TYPE_SCROLL_SENSITIVE: 表示ResultSet对象的类型的常量 , 该对象是可滚动的 , 通常对ResultSet基础数据的更改敏感 。* resultSetConcurrency – a concurrency type; one of*ResultSet.CONCUR_READ_ONLY or : 表示不能更新的ResultSet对象的并发模式的常量 。*ResultSet.CONCUR_UPDATABLE: 指示可更新的ResultSet对象的并发模式的常量 。*/PreparedStatement preparedStatement1 = connection.prepareStatement("select * from demo where id = ?", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);//重载方法/*** sql – a String object that is the SQL statement to be sent to the database; may contain one or more '?' IN parameters* resultSetType – a result set type; one of*ResultSet.TYPE_FORWARD_ONLY, : 表示ResultSet对象类型的常量 , 该对象的光标只能向前移动 。*ResultSet.TYPE_SCROLL_INSENSITIVE, or : 表示ResultSet对象的类型的常量 , 该对象是可滚动的 , 但通常对ResultSet基础数据的更改不敏感 。*ResultSet.TYPE_SCROLL_SENSITIVE: 表示ResultSet对象的类型的常量 , 该对象是可滚动的 , 通常对ResultSet基础数据的更改敏感 。* resultSetConcurrency – a concurrency type; one of*ResultSet.CONCUR_READ_ONLY or : 表示不能更新的ResultSet对象的并发模式的常量 。*ResultSet.CONCUR_UPDATABLE: 指示可更新的ResultSet对象的并发模式的常量 。* resultSetHoldability – one of the following ResultSet constants:*ResultSet.HOLD_CURSORS_OVER_COMMIT or : 表示具有此可保持性的打开的ResultSet对象在提交当前事务时将保持打开的常量 。*ResultSet.CLOSE_CURSORS_AT_COMMIT: 指示具有此可保持性的打开ResultSet对象的常量将在提交当前事务时关闭 。*/PreparedStatement preparedStatement2 = connection.prepareStatement("select * from demo where id = ?", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT);//重载方法/*** sql – an SQL statement that may contain one or more '?' IN parameter placeholders* columnIndexes – 列索引数组 , 指示应从插入的行返回的列*/PreparedStatement preparedStatement3 = connection.prepareStatement("select * from demo where id = ?", new int[]{1, 2});//重载方法/*** sql – an SQL statement that may contain one or more '?' IN parameter placeholders* columnNames – 列名数组 , 指示应从插入的行返回的列*/PreparedStatement preparedStatement4 = connection.prepareStatement("select * from demo where id = ?", new String[]{"select * from demo where id = ?"});//重载方法/*** sql – an SQL statement that may contain one or more '?' IN parameter placeholders* autoGeneratedKeys – a flag indicating whether auto-generated keys should be returned; one of*Statement.RETURN_GENERATED_KEYS or : 指示生成的键应可供检索的常量 。*Statement.NO_GENERATED_KEYS: 指示生成的键不应供检索的常量 。*/PreparedStatement preparedStatement5 = connection.prepareStatement("select * from demo where id = ?", Statement.NO_GENERATED_KEYS);}