Java调用存储过程
2012-07-11 18:05
411 查看
1.例子1:一个简单的存储过程的java调用:有参数无返回值!
<1>.存储过程的写法:
<2>.java调用存储过程:
2.无参数,只有返回结果集。(相当于全查询)
<1>.存储过程的写法:
<2>.java调用存储过程:
3.有返回值参数的存储过程;(获得刚刚插入数据的ID号)
<1>.存储过程的写法:
<2>.java调用存储过程:
<1>.存储过程的写法:
/*写一个简单的存储过程--如插入t_user表中的数据*/ DELIMITER// CREATEPROCEDUREinsert_test( INusernameVARCHAR(50), INaddressVARCHAR(50) ) BEGIN INSERTINTOt_user(username,address)VALUES(username,address); END// DELIMITER; /*调用该存储过程*/ CALLinsert_test('ok','chenc');
<2>.java调用存储过程:
packagecom.hanchao.test; importjava.sql.CallableStatement; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.SQLException; /** *java调用存储过程的测试 *@authorhanlw *2012-07-09 */ publicclassTestProcedure{ publicstaticvoidmain(String[]args)throwsException{ /** *为什么要使用存储过程?★ *1.效率高;★ * *2.★在日程开发的过程中,当我们的SQL语句很复杂时,我们要考虑写 *一个存储过程,以达到优化数据库的过程!!★ * *3.数据库优化的几个方法: *①不要连接不需要的表; *②不要用like等通配符,即使用也要放在最后。 *③存储过程的java调用!! */ Class.forName("com.mysql.jdbc.Driver"); Connectioncon=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb","root","root"); //★与以前不一样的地方 CallableStatementcs=con.prepareCall("{callinsert_test(?,?)}"); cs.setString(1,"tom"); cs.setString(2,"America"); introws=cs.executeUpdate(); if(rows>0){ System.out.println("thankyou!"); }else{ System.out.println("goodbye!"); } cs.close(); con.close(); } }
2.无参数,只有返回结果集。(相当于全查询)
<1>.存储过程的写法:
/*全查询*/ DELIMITER// CREATEPROCEDUREfind_test() BEGIN SELECTid,username,addressFROMt_user; END// DELIMITER; /*调用该存储过程*/ CALLfind_test();
<2>.java调用存储过程:
packagecom.hanchao.test; importjava.sql.CallableStatement; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.ResultSet; /** *java调用存储过程 *@authorhanlw *2012-07-09 */ publicclassTestProcedure2{ publicstaticvoidmain(String[]args)throwsException{ Class.forName("com.mysql.jdbc.Driver"); Connectioncon=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb","root","root"); //★注意:CallableStatement是java.sql.CallableStatement CallableStatementcs=con.prepareCall("{callfind_test}"); ResultSetrs=cs.executeQuery(); while(rs.next()){ intid=rs.getInt("id"); Stringusername=rs.getString("username"); Stringaddress=rs.getString("address"); System.out.println(id+"\t"+username+"\t"+address); } rs.close(); cs.close(); con.close(); /** *注意:发现没有,这和我们的JDBC的写法几乎没有区别。 *只是把PreparedStatement换成了CallableStatement!!! */ } }
3.有返回值参数的存储过程;(获得刚刚插入数据的ID号)
<1>.存储过程的写法:
/*带返回值参数的存储过程*/ DELIMITER// CREATEPROCEDUREinsert_getId( INusernameVARCHAR(20), INaddressVARCHAR(20), OUTidINT ) BEGIN INSERTINTOt_user(username,address)VALUES(username,address); SELECTLAST_INSERT_ID()INTOid; SELECTid; END// DELIMITER; /*调用该存储过程*/ CALLinsert_getId('jack','USA',@id); /*★比较一下这个存储过程与上面的不同之处!以及调用的不同之处!!★*/ /*带返回值参数的存储过程*/ DELIMITER// CREATEPROCEDUREinsert_getId12( INusernameVARCHAR(20), INaddressVARCHAR(20), OUTidINT ) BEGIN INSERTINTOt_user(username,address)VALUES(username,address); SELECTLAST_INSERT_ID()INTOid; #SELECTid;/*★体会一下这一句的不同!*/ END// DELIMITER; /*调用该存储过程*/ CALLinsert_getId12('jack1','USA1',@id); SELECT@id;
<2>.java调用存储过程:
packagecom.hanchao.test;
importjava.sql.CallableStatement;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.Types;
/**
*java调用存储过程
*@authorhanlw
*2012-07-09
*/
publicclassTestProcedure3{
publicstaticvoidmain(String[]args)throwsException{
Class.forName("com.mysql.jdbc.Driver");
Connectioncon=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb","root","root");
//★煮一下下面几行
CallableStatementcs=con.prepareCall("{callinsert_getId(?,?,?)}");
cs.setString(1,"hanchao");
cs.setString(2,"Canada");
cs.registerOutParameter(3,Types.INTEGER);//注意这一句的不同之处!!
cs.executeUpdate();//执行
intid=cs.getInt(3);//注意:
System.out.println("刚刚插入的ID为:"+id);
cs.close();
con.close();
}
}
相关文章推荐
- 创建存储过程并用java调用实例
- java调用informix存储过程
- Java调用MySQL存储过程
- Java通过connection对象调用存储过程
- java程序调用存储过程一(返回特定值)
- 利用游标返回结果集的的例子(Oracle 存储过程)JAVA调用方法和.NET调用方法
- java调用oracle返回结果集的存储过程
- 在JAVA中调用存储过程、并将结果取出来一例
- java调用存储过程
- oracle 存储过程编写和java程序调用oracle存储过程
- java调用mysql命令 导入(包括存储过程和表结构)
- oracle pl/sql之java中调用oracle有参存储过程
- JAVA调用MYSQL存储过程实现分页
- Java 调用存储过程总结
- java, mybatis, 调用mysql存储过程
- JAVA调用数据库存储过程
- Oracle全文检索建索引,存储过程,以及java方法调用高亮显示
- pl/sql 有返回值的存储过程 java调用pl/sql过程 实例
- oracle pl/sql应用解析以及存储过程对应到java中的调用方法
- 如何用JAVA调用存储过程