JDBC CallableStatement 使用范例
jdbc callablestatement 使用范例
jdbc callablestatement 对象用来调用数据库存储过程。
1. 存储过程范例
delimiter $$ drop procedure if exists `emp`.`getempname` $$ create procedure `emp`.`getempname` (in emp_id int, out emp_first varchar(255)) begin select first into emp_first from employees where id = emp_id; end $$ delimiter ;
2. callablestatement 使用范例
//step 1. import required packages
import java.sql.*;
public class jdbcexample {
// jdbc driver name and database url
static final string jdbc_driver = "com.mysql.jdbc.driver";
static final string db_url = "jdbc:mysql://localhost/emp";
// database credentials
static final string user = "username";
static final string pass = "password";
public static void main(string[] args) {
connection conn = null;
callablestatement stmt = null;
try{
//step 2: register jdbc driver
class.forname("com.mysql.jdbc.driver");
//step 3: open a connection
system.out.println("connecting to database...");
conn = drivermanager.getconnection(db_url,user,pass);
//step 4: execute a query
system.out.println("creating statement...");
string sql = "{call getempname (?, ?)}";
stmt = conn.preparecall(sql);
//bind in parameter first, then bind out parameter
int empid = 102;
stmt.setint(1, empid); // this would set id as 102
// because second parameter is out so register it
stmt.registeroutparameter(2, java.sql.types.varchar);
//use execute method to run stored procedure.
system.out.println("executing stored procedure..." );
stmt.execute();
//retrieve employee name with getxxx method
string empname = stmt.getstring(2);
system.out.println("emp name with id:" +
empid + " is " + empname);
stmt.close();
conn.close();
}catch(sqlexception se){
//handle errors for jdbc
se.printstacktrace();
}catch(exception e){
//handle errors for class.forname
e.printstacktrace();
}finally{
//finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}catch(sqlexception se2){
}// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(sqlexception se){
se.printstacktrace();
}//end finally try
}//end try
system.out.println("goodbye!");
}//end main
}//end jdbcexample
3. 编译运行
现在来编译上面的例子:
c:>javac jdbcexample.java c:>
当运行jdbcexample,它会产生以下结果:
c:>java jdbcexample connecting to database... creating statement... executing stored procedure... emp name with id:102 is zaid goodbye! c:>


