DB2数据库调用存储过程的方法及实例介绍

上次我们介绍了DB2数据库创建触发器的实现过程,本文我们来介绍一下DB2数据库存储过程的调用,接下来就让我们来一起了解一下这部分内容吧。

一、对存储过程的调用分三部分

1.连接(与数据库建立连接)

  1. Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();  
  2.  
  3. Connection con=DriverManager.getConnection(url,user,password); 

2.注册输出参数

  1. cs.registerOutParameter (3, Types.INTEGER); 

3.调用存储过程:

  1. CallableStatement cs=con.prepareCall("{call store_name(参数,参数,参数)}"); 

二、调用举例:

  1. import java.net.URL;  
  2.  
  3. import java.sql.*;  
  4.  
  5. class test2  
  6.  
  7. {  
  8.  
  9. public static void main(String args[])  
  10.  
  11. {  
  12.  
  13. String url = "jdbc:db2://wellhope/sample";  
  14.  
  15. String user="db2admin";  
  16.  
  17. String password="db2admin";  
  18.  
  19. try  
  20.  
  21. {  
  22.  
  23. Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();  
  24.  
  25. //与数据库建立连接  
  26.  
  27. Connection con=DriverManager.getConnection(url,user,password);  
  28.  
  29. checkForWarning(con.getWarnings());  
  30.  
  31. DatabaseMetaData dma=con.getMetaData();  
  32.  
  33. String str="This is a string";  
  34.  
  35. //int hashcode=str.hashCode();  
  36.  
  37. //System.out.println("Hashcode   "+hashcode);  
  38.  
  39. //创建Statement对象,用于执行SQL语句  
  40.  
  41. Statement stmt=con.createStatement();  
  42.  
  43. //创建CallableStatement对象,用于执行存储过程  
  44.  
  45. CallableStatement cs=con.prepareCall("{call PRO_YHDL1(?,?,?)}");  
  46.  
  47. //注册输出参数  
  48.  
  49. cs.registerOutParameter (3, Types.INTEGER);  
  50.  
  51. int result = 0;  
  52.  
  53. cs.setString(1,"123");  
  54.  
  55. cs.setString(2,"123");  
  56.  
  57. cs.execute();  
  58.  
  59. result = cs.getInt (3);  
  60.  
  61. dispResultSet(result);  
  62.  
  63. cs.close();  
  64.  
  65. con.close();  
  66.  
  67. }  
  68.  
  69. catch(SQLException ex)  
  70.  
  71. {  
  72.  
  73. System.out.println(" * * * SQLException caught * * * ");  
  74.  
  75. while(ex!=null)  
  76.  
  77. {  
  78.  
  79. System.out.println("SQLState: "+ex.getSQLState());  
  80.  
  81. System.out.println("Message: "+ex.getMessage());  
  82.  
  83. System.out.println("Vendor: "+ex.getErrorCode());  
  84.  
  85. exex=ex.getNextException();  
  86.  
  87. System.out.println("");  
  88.  
  89. }  
  90.  
  91. }     
  92.  
  93. catch(java.lang.Exception ex)  
  94.  
  95. {      
  96.  
  97. ex.printStackTrace();  
  98.  
  99. }  
  100.  

三、存储过程举例:

Pro_yhdl1是一个存储过程,它的功能是从数据库表YHDL中取出PWD:

  1. import java.sql.*;                    
  2.  
  3. public class Pro_yhdl1  
  4.  
  5. {  
  6.  
  7. public static void pro_yhdl1 ( String m_id,  
  8.  
  9. String m_pwd,  
  10.  
  11. int[] result ) throws SQLException, Exception  
  12.  
  13. {  
  14.  
  15. // Get connection to the database  
  16.  
  17. Connection con = DriverManager.getConnection("jdbc:default:connection");  
  18.  
  19. PreparedStatement stmt = null;  
  20.  
  21. ResultSet rs = null;  
  22.  
  23. String sql;  
  24.  
  25. String m_password="";  
  26.  
  27. sql = "SELECT" 
  28.  
  29. + "       DB2ADMIN.YHDL.PWD"  
  30.  
  31. + " FROM"  
  32.  
  33. + "    DB2ADMIN.YHDL"  
  34.  
  35. + " WHERE"  
  36.  
  37. + "    ("  
  38.  
  39. + "       ( "  
  40.  
  41. + "          DB2ADMIN.YHDL.ID = '"+m_id.trim()+"'"  
  42.  
  43. + "       )"  
  44.  
  45. + "    )";  
  46.  
  47. stmt = con.prepareStatement( sql );  
  48.  
  49. rs = stmt.executeQuery();  
  50.  
  51. // Access query results  
  52.  
  53. while (rs.next())  
  54.  
  55. {  
  56.  
  57. m_password=rs.getString(1);  
  58.  
  59. m_passwordm_password=m_password.trim();  
  60.  
  61. if (rs.wasNull())  
  62.  
  63. System.out.print("NULL");  
  64.  
  65. else  
  66.  
  67. System.out.print(m_password);  
  68.  
  69. }  
  70.  
  71. if(m_password.equals(m_pwd.trim()))  
  72.  
  73. {  
  74.  
  75. result[0] =1;  
  76.  
  77. }  
  78.  
  79. else  
  80.  
  81. {  
  82.  
  83. result[0] =0;  
  84.  
  85. }  
  86.  
  87. // close open resources  
  88.  
  89. if (rs != null) rs.close();  
  90.  
  91. if (stmt != null) stmt.close();  
  92.  
  93. if (con != null) con.close();  
  94.  
  95. // set return parameter  
  96.  
  97. //result[0] = result[0];  
  98.  
  99. }  
  100.  

关于DB2数据库调用存储过程的知识就介绍到这里了,希望本次的介绍能够对您有所帮助。

【编辑推荐】

  1. Oracle数据库中Constraint约束的四对属性
  2. SQL Server 2005无法连接到本地服务器的解决
  3. Linux下重新配置MySQL数据库引擎innodb的过程
  4. Navicat MySQL连接Linux下MySQL的问题解决方案
  5. SQL Server 2000在Windows7 旗舰版中的安装配置

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/226302.html<

(0)
运维的头像运维
上一篇2025-04-17 07:33
下一篇 2025-04-17 07:35

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注