java调用mysql存储过程实例分析
本文实例讲述了java调用mysql存储过程的方法。分享给大家供大家参考。具体如下:
数据库的测试代码如下:
1、新建表test
createtabletest( field1intnotnull ) TYPE=MyISAM; insertintotest(field1)values(1);
2、删除已存在的存储过程:
--删除储存过程 delimiter//--定义结束符号 dropprocedurep_test;
3、mysql存储过程定义:
createprocedurep_test() begin declaretempint; settemp=0; updatetestsetfield1=values(temp); end
4、调用方法:
CallableStatementcStmt=conn.prepareCall("{callp_test()}");
cStmt.executeUpdate();
importjava.sql.*;
/**
iGoder
*/
publicclassProcedureTest{
/*
表和存储过程定义如下:
delimiter//
DROPTABLEifexiststest//
CREATETABLEtest(
idint(11)NULL
)//
dropprocedureifexistssp1//
createproceduresp1(inpint)
comment'insertintoaintvalue'
begin
declarev1int;
setv1=p;
insertintotest(id)values(v1);
end
//
dropprocedureifexistssp2//
createproceduresp2(outpint)
begin
selectmax(id)intopfromtest;
end
//
dropprocedureifexistssp6//
createproceduresp6()
begin
select*fromtest;
end//
*/
publicstaticvoidmain(String[]args){
//callIn(111);
//callOut();
callResult();
}
/**
*调用带有输入参数的存储过程
*@paraminstoredprocedureinputparametervalue
*/
publicstaticvoidcallIn(intin){
//获取连接
Connectionconn=ConnectDb.getConnection();
CallableStatementcs=null;
try{
//可以直接传入参数
//cs=conn.prepareCall("{callsp1(1)}");
//也可以用问号代替
cs=conn.prepareCall("{callsp1(?)}");
//设置第一个输入参数的值为110
cs.setInt(1,in);
cs.execute();
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
if(cs!=null){
cs.close();
}
if(conn!=null){
conn.close();
}
}catch(Exceptionex){
ex.printStackTrace();
}
}
}
/**
*调用带有输出参数的存储过程
*
*/
publicstaticvoidcallOut(){
Connectionconn=ConnectDb.getConnection();
CallableStatementcs=null;
try{
cs=conn.prepareCall("{callsp2(?)}");
//第一个参数的类型为Int
cs.registerOutParameter(1,Types.INTEGER);
cs.execute();
//得到第一个值
inti=cs.getInt(1);
System.out.println(i);
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
if(cs!=null){
cs.close();
}
if(conn!=null){
conn.close();
}
}catch(Exceptionex){
ex.printStackTrace();
}
}
}
/**
*调用输出结果集的存储过程
*/
publicstaticvoidcallResult(){
Connectionconn=ConnectDb.getConnection();
CallableStatementcs=null;
ResultSetrs=null;
try{
cs=conn.prepareCall("{callsp6()}");
rs=cs.executeQuery();
//循环输出结果
while(rs.next()){
System.out.println(rs.getString(1));
}
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
}
if(cs!=null){
cs.close();
}
if(conn!=null){
conn.close();
}
}catch(Exceptionex){
ex.printStackTrace();
}
}
}
}
/**
*获取数据库连接的类
*/
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
classConnectDb{
publicstaticConnectiongetConnection(){
Connectionconn=null;
PreparedStatementpreparedstatement=null;
try{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Stringdbname="test";
Stringurl="jdbc:mysql://localhost/"+dbname+"?user=root&password=root&useUnicode=true&characterEncoding=8859_1";
conn=DriverManager.getConnection(url);
}catch(Exceptione){
e.printStackTrace();
}
returnconn;
}
}
希望本文所述对大家的java程序设计有所帮助。