package com.enhance.jdbc;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class PreparedStatementTest {
private String driver;
private String url;
private String user;
private String pass;
private Statement stmt;
private ResultSet rs;
private PreparedStatement pstmt;
public void initParam(String paramFile) throws Exception{
Properties prop=new Properties();
prop.load(new FileInputStream(paramFile));
driver=prop.getProperty("driver");
url=prop.getProperty("url");
user=prop.getProperty("user");
pass=prop.getProperty("pass");
}
public Connection getConnection() throws ClassNotFoundException, SQLException{
Class.forName(driver);
return DriverManager.getConnection(url,user,pass);
}
public void executeDmlAndDdlUseStmt()throws Exception{
long start=System.currentTimeMillis();
Connection conn=null;
try {
conn=getConnection();
stmt=conn.createStatement();
for (int i = 0; i < 1000; i++) {
stmt.executeUpdate("insert into my_test (test_name)"
+ " values('姓名"+i+"')");
}
System.out.println("使用Statement费时:"+(System.currentTimeMillis()-start));
}finally{
if(rs!=null)
rs.close();
if(stmt!=null)
stmt.close();
if(conn!=null)
conn.close();
}
}
public void executeDmlAndDdlUsePstmt()throws Exception{
long start=System.currentTimeMillis();
Connection conn=null;
try {
conn=getConnection();
pstmt=conn.prepareStatement("insert into my_test (test_name) values(?)");
for (int i = 0; i < 1000; i++) {
pstmt.setString(1, "姓名2"+i);
pstmt.executeUpdate();
}
System.out.println("使用PreparedStatement费时:"+(System.currentTimeMillis()-start));
}finally{
if(rs!=null)
rs.close();
if(pstmt!=null)
pstmt.close();
if(conn!=null)
conn.close();
}
}
/**
* 创建存储过程
* delimiter //
* create or replace procedure(a int,b int,out sum int)
* begin
* set sum=a+b;
* end;
* //
*/
public void callProcedure() throws Exception{
try {
Class.forName(driver);
conn=DriverManager.getConnection(url,user,pass);
cstmt=conn.prepareCall("{call add_proc(?,?,?)}");
cstmt.setInt(1, 4);
cstmt.setInt(2, 5);
//注册 输出参数
cstmt.registerOutParameter(3, Types.INTEGER);
cstmt.execute();
System.out.println("执行结果是:"+cstmt.getInt(3));
}finally{
if(cstmt!=null)
cstmt.close();
if(conn!=null)
conn.close();
}
}
public static void main(String[] args) throws Exception{
PreparedStatementTest pst=new PreparedStatementTest();
pst.initParam("src/mysql.ini");
pst.executeDmlAndDdlUseStmt();
pst.executeDmlAndDdlUsePstmt();
}
}
Statement 和 PreparedStatement ,CallabelStatement
最新推荐文章于 2022-07-04 10:00:51 发布