zoukankan      html  css  js  c++  java
  • DB2 9 利用拓荒(733 查验)认证指南,第 6 局部: .NET 编程(4)

    完成 DB2 与 .NET 框架的无缝接口
    developerWorks








    用 ADO.NET 读取和更新数据

    在本节中,您将学习如何在 .NET 利用递次中运用 ADO.NET DB2Command 工具来实行 SQL 语句。读完本节后,您将学会:

    • 什么是 DB2Command 工具
    • 若何运用 ExecuteReader() 方法从 DB2 中读数据
    • 若何运用 ExecuteNonQuery() 方法拔出和删除数据
    • 若何运用 ExecuteScalar() 方法前往单个值

    DB2Command 工具

    DB2Command 工具容许您指定与 DB2 住手交互的体例。例如,可以对 DB2 中的数据实行 SELECTINSERTMODIFYDELETE 敕令。

    当运用 DB2 .NET Data Provider 时,可以经过 DB2Command 类的 ExecuteReader()ExecuteNonQuery() 方法以及它的 CommandTextCommandTypeTransaction 属性实行 SQL 语句。关于有输出的 SQL 语句,应该运用 ExecuteReader() 方法;它的结果可以从 DB2DataReader 工具中检索。关于统统其余 SQL 语句,应该运用 ExecuteNonQuery() 方法。 DB2Command 工具的 Transaction 属性应该初始化为一个 DB2TransactionDB2Transaction 工具担任回滚和提交数据库事宜。

    DB2Command 工具可以运用 DB2Connection.CreateCommand() 方法创设。下面是一个例子:

    DB2Command cmd;
    ...
    //assume conn is a DB2Connection object
    cmd = conn.createCommand();
    


    若要从 DB2Command 工具中实行 INSERTUPDATEDELETE SQL 语句,可将 CommandContext 设置为响应的 SQL 语句,并挪用 cmd.ExecuteNonQuery() 方法。例如:

    清单 5. 实行非盘问 SQL 语句

                        
    // assume a DB2Connection conn 
    DB2Command cmd = conn.CreateCommand(); 
    DB2Transaction trans = conn.BeginTransaction(); 
    cmd.Transaction = trans; 
    cmd.CommandText = "INSERT INTO STAFF (ID,NAME,DEPT,JOB) 
    VALUES (401, 'Peter', 99,'Mgr')";      
    cmd.ExecuteNonQuery();
    


    若要从 DB2Command 工具中实行一个盘问,可将 CommandContext 设置为盘问,并挪用 cmd.ExecuteReader() 方法:

    清单 6. 实行盘问

                        
    // assume a DB2Connection conn 
    DB2Command cmd = conn.CreateCommand(); 
    DB2Transaction trans = conn.BeginTransaction(); 
    cmd.Transaction = trans; 
    cmd.CommandText = "SELECT ID, NAME, JOB FROM STAFF WHERE DEPT = 99"; 
    DB2DataReader reader = cmd.ExecuteReader();
    


    利用递次实行完一个数据库事宜后,必需回滚该事宜,否则提交该事宜。可以运用 DB2Transaction 工具的 Commit()Rollback() 方法来实行提交和回滚。下面揭示如何在 C# 中回滚或提交事宜:

    // assume a DB2Transaction object trans
    trans.Rollback(); 
    ... 
    trans.Commit();
    


    可以运用 DB2DataReader 工具来理睬结果集。运用 Read() 可行进到结果集的下一行。然后,在每次取回数据之后,运用吻合数据标准的方法检索列值。可以运用 GetString()GetInt32()GetDecimal() 等方法(关于其余可用数据标准也有类似的方法)从输出的各个列中提取数据。可以运用 DB2DataReader.Close() 方法封锁 DB2DataReader。当输出读取停止时,应该接续实行多么的利用。清单 7 揭示了在 C# 中若何读取结果集:

    清单 7. 在 C# 中读取结果集

                        
    // assume a DB2DataReader reader 
    Int16 id = 0; 
    String name = ""; 
    string job = "";
    // Output the results of the query 
    while(reader.Read()) 
    { 
        id = reader.GetInt16(0); 
        name = reader.GetString(1); 
        job = reader.GetString(2);
        Console.WriteLine(" "   id   " "   name   " "   job); 
    } 
    reader.Close();
    







    回页首



    将参数添加到 DB2Command 工具中

    关于静态 SQL,需要添加参数到 DB2Command 工具中,并设置这些参数的值,例如:

    清单 8. 添加参数到 DB2Command 工具中,并设置参数的值

                        
    String insertStmt = "INSERT INTO STAFF (ID,NAME,DEPT,JOB) VALUES (?, ?, 99, ?)";
    String [,] staff =  {{"Smyth","LW"},{"Hesky","RW"},{"Peter","CLK"}};
    //Assume conn is a DB2Connection object
    DB2Command cmd = conn.CreateCommand(); 
    trans = conn.BeginTransaction(); 
    cmd.Transaction = trans; 
    cmd.CommandText = insertStmt;
    cmd.Prepare(); 
    // Declare the parameters for the statement 
    cmd.Parameters.Add("@id", DB2Type.SmallInt);
    cmd.Parameters.Add("@name", DB2Type.VarChar, 9);
    cmd.Parameters.Add("@job", DB2Type.Char, 5);
    //Set their values and then insert
    for (int i = 0; i < 3; i  ) 
    {     	
      cmd.Parameters["@id"].Value = 401   i;
      cmd.Parameters["@name"].Value = staff[i,0];
      cmd.Parameters["@job"].Value = staff[i,1];
      cmd.ExecuteNonQuery();
    }
    







    回页首



    示例代码

    清单 9 演示了本节中接头的统统观观点,包孕:

    • 创设 DB2Command 工具
    • 实行 INSERTUPDATEDELETE 语句
    • 实行 SQL 盘问
    • 理睬结果集工具

    清单 9. DB2Command:示例利用递次
                        
    using System;
    using System.Data;
    using System.IO;
    using IBM.Data.DB2;
    >

    若要编译该代码,可将该递次放入包孕剧本 bldapp.bat 的 �2PATH%\samples\.NET\cs 目录中。然后发出以下敕令:

     bldapp AccessSamplDb
     


    若要运转该利用递次,可发出以下敕令:

     AccessSamplDb
     


    这个利用递次的输出应类似下面的内容:

    Employe #  Employee Name   Job
     401        Smyth          LW
     402        Hesky          RW
     403        Peter          CLK
    





    版权声明: 原创作品,容许转载,转载时请务必以超链接方式标明文章 原始出处 、作者信息和本声明。否则将究查法则责任。

  • 相关阅读:
    SpringBoot-Swagger
    SpringBoot-Shiro
    SpringBoot-SpringSecurity
    SpringBoot-整合数据库
    SpringBoot-Web开发
    SpringBoot-基础
    SpringMVC-文件上传和下载
    SpringMVC-拦截器
    SpringMVC-AJAX
    Eclipse的安装
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1972835.html
Copyright © 2011-2022 走看看