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程序设计有所帮助。