在JDK1.4的api文档中,可以找到对PreparedStatement的描述:
An object that represents a precompiled SQL statement.
A SQL statement is precompiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.
根据这样的描述我们可以得到这样的印象:设计PreparedStatement是为了提高数据库处理和执行SQL语句的效率。如果起的作用是相反或者没有作用,那么就没有存在的必要。
当需要对数据库进行数据插入、更新或者删除的时候,程序会发送整个SQL语句给数据库处理和执行。数据库处理一个SQL语句,需要完成解析SQL语句、检查语法和语义以及生成代码;一般说来,处理时间要比执行语句所需要的时间长。
如果需要发送的SQL语句除了数据改变之外其他都不变——这是经常可以遇见的——假如按照通常的手段,那么数据库还是会重新解析这条语句,做上一次已经做过的事情。如果次数很多,比如上万次,那么重复解析所花费的时间就相当可观了。
PreparedStatement接口用来把一个SQL语句发送给数据库,让该语句在数据库中得到预处理,然后数据库得到程序发送过去的数据执行相应的操作。程序不断发送数据,而数据库不需要再花费解析的时间就可以执行。
看以下例子
str2="INSERT INTO student (name,physic,maths,chinese,english) VALUES(?,?,?,?,?)";
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException e){}
try{
con=DriverManager.getConnection("jdbc:odbc:redsun","snow","ookk"); PreparedStatement ps=con.prepareStatement(str2);
ps.setString(1,"xiaowang");
ps.setInt(2,90);
ps.setInt(3,91);
ps.setInt(4,93);
ps.setInt(5,94);
a=System.currentTimeMillis();//记录起始时间
for(int i=0;i<10000;i++) { ps.executeUpdate(); } b=System.currentTimeMillis();//记录结束时间
abc=b-a;
con.close();}
catch(SQLException e1){e1.getMessage();}
An object that represents a precompiled SQL statement.
A SQL statement is precompiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.
根据这样的描述我们可以得到这样的印象:设计PreparedStatement是为了提高数据库处理和执行SQL语句的效率。如果起的作用是相反或者没有作用,那么就没有存在的必要。
当需要对数据库进行数据插入、更新或者删除的时候,程序会发送整个SQL语句给数据库处理和执行。数据库处理一个SQL语句,需要完成解析SQL语句、检查语法和语义以及生成代码;一般说来,处理时间要比执行语句所需要的时间长。
如果需要发送的SQL语句除了数据改变之外其他都不变——这是经常可以遇见的——假如按照通常的手段,那么数据库还是会重新解析这条语句,做上一次已经做过的事情。如果次数很多,比如上万次,那么重复解析所花费的时间就相当可观了。
PreparedStatement接口用来把一个SQL语句发送给数据库,让该语句在数据库中得到预处理,然后数据库得到程序发送过去的数据执行相应的操作。程序不断发送数据,而数据库不需要再花费解析的时间就可以执行。
看以下例子
str2="INSERT INTO student (name,physic,maths,chinese,english) VALUES(?,?,?,?,?)";
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
catch(ClassNotFoundException e){}
try{
con=DriverManager.getConnection("jdbc:odbc:redsun","snow","ookk"); PreparedStatement ps=con.prepareStatement(str2);
ps.setString(1,"xiaowang");
ps.setInt(2,90);
ps.setInt(3,91);
ps.setInt(4,93);
ps.setInt(5,94);
a=System.currentTimeMillis();//记录起始时间
for(int i=0;i<10000;i++) { ps.executeUpdate(); } b=System.currentTimeMillis();//记录结束时间
abc=b-a;
con.close();}
catch(SQLException e1){e1.getMessage();}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货