PreparedStatement接口继承自Statement接口,PreparedStatement比普通的Statement对象使用起来更加灵活,更有效率.
PreparedStatement实例包含已编译的SQL语句,SQL语句可具有一个或多个输入参数。这些输入参数的值在SQL语句创建时
未被指定,而是为每个输入参数保留一个问号,作为占位符。
实例:
PreparedStatement ps = conn.preparedStatement("Insert into demo (name,score) values(?,?)");
在执行PreparedStatement对象之前,必须设置每个输入参数的值。可功过setXXX方法来完成,其中XXX是与该参数相应的类型
如果该参数是Int类型,则使用的方法是setInt().sexXXX方法的第一个参数是该参数所占位的序号,第二个参数是设置给参数的值。
ps.setString("Hamber");
ps.setInt(100);
由于PreparedStatement已经编译,所以执行起来要比Statement速度要快.
以下示例利用PreparedStatement执行查询操作
- import java.sql.*;
- public class Test
- {
- public static void main(String ar [])
- {
- Connection conn = null;
- PreparedStatement ps = null;
- try
- {
- String sql = "Select * from cong1";
- try
- {
- Class.forName("com.microsoft.sqlserver.jdbc.SqlServerDriver");
- }
- catch(ClassNotFoundException ex)
- {
- ex.printStackTrace();
- }
- conn = DriverManager.getConnection("jdbc:sqlserver://localhost1433;DataBaseName = hamber","sa","123456");
- ps = conn.PreparedStatement(sql);
- ReulstSet rs = ps.executeQuery();
- while(rs.next())
- {
- int a = rs.getInt("score");
- String b = rsgetString("name");
- }
- }
- catch(SQLException ex)
- {
- ex.printStackTrace();
- }
- finally
- {
- try
- {
- ps.close();
- conn.close();
- }
- catch(SQLException ex)
- {
- ex.printStackTrace();
- }
- }
- }
- }