DB2 9 利用拓荒(733 查验)认证指南,第 6 局部: .NET 编程(4)
完成 DB2 与 .NET 框架的无缝接口
![]()
用 ADO.NET 读取和更新数据
在本节中,您将学习如何在 .NET 利用递次中运用 ADO.NET DB2Command 工具来实行 SQL 语句。读完本节后,您将学会:
- 什么是
DB2Command工具 - 若何运用
ExecuteReader()方法从 DB2 中读数据 - 若何运用
ExecuteNonQuery()方法拔出和删除数据 - 若何运用
ExecuteScalar()方法前往单个值
DB2Command 工具
DB2Command 工具容许您指定与 DB2 住手交互的体例。例如,可以对 DB2 中的数据实行 SELECT、INSERT、MODIFY 和 DELETE 敕令。
当运用 DB2 .NET Data Provider 时,可以经过 DB2Command 类的 ExecuteReader() 和 ExecuteNonQuery() 方法以及它的 CommandText、CommandType 和 Transaction 属性实行 SQL 语句。关于有输出的 SQL 语句,应该运用 ExecuteReader() 方法;它的结果可以从 DB2DataReader 工具中检索。关于统统其余 SQL 语句,应该运用 ExecuteNonQuery() 方法。 DB2Command 工具的 Transaction 属性应该初始化为一个 DB2Transaction。DB2Transaction 工具担任回滚和提交数据库事宜。
DB2Command 工具可以运用 DB2Connection.CreateCommand() 方法创设。下面是一个例子:
DB2Command cmd; ... //assume conn is a DB2Connection object cmd = conn.createCommand();
若要从 DB2Command 工具中实行 INSERT、UPDATE 或 DELETE 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工具 - 实行
INSERT、UPDATE或DELETE语句 - 实行 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
版权声明: 原创作品,容许转载,转载时请务必以超链接方式标明文章 原始出处 、作者信息和本声明。否则将究查法则责任。

浙公网安备 33010602011771号