All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ASP.NET2.0数据库入门之常见错误_[Asp.Net教程]
制作网站前看看这些好的网页技术规范_[Html教程]
复杂ASP.NET服务器控件调整小技巧_.net资料_编程技术
XP上安装SqlServer2000_[SQL Server教程]
ASP.NET中散列加密密码_[Asp.Net教程]
php5的simplexml解析错误_[PHP教程]
一些有实用价值的SQL语句_[SQL Server教程]
Asp.net,MVC2.0初级教程-显示列表和内容页_[Asp.Net教程]
Windows,Server,2003,安全配置实战演习_[SQL,Server教程]
ASP.net(c#)字符串替换简单例子_[Asp.Net教程]
Reading number is top 10 pictures
Beauty shocked Japan Tokyo motor show model
陪睡门马睿菈自曝写真 称首拍大尺度照片2
运动的范冰冰2
小学生作文又现神作,你不得不佩服
The money of more than 100 countries and regions8
The money of more than 100 countries and regions1
Black and white also sexy--YanLiu2
Beautiful Japanese beauty(漂亮的日本美女)3
So beauty, will let you spray blood7
美女挤公交
Download software ranking
电车之狼R
传奇私服架设教程-chm
linux高级编程
Twenty piece of palm leaf
都市狐狸姑娘传
VeryCD电驴(EasyMule) V1.1.9 Build09081
Call Of Duty2
Eclipse 4.2.1 For Win32
Prostitutes diary
Eclipse 4.2.2 For Win32
aaa published in(发表于) 2013/12/11 8:28:18 Edit(编辑)
ADO.NET,2.0:如何排除错误信息_.net资料_编程技术

ADO.NET,2.0:如何排除错误信息_.net资料_编程技术

ADO.NET 2.0:如何排除错误信息_.net资料_编程技术-你的首页-uuhomepage.com


图1



图2


图表 1 与 2 所示的程序示范如何取得数据命令所传回的两个结果集,并将这两个结果集之所有数据记录之所有字段的内容显示于窗体上的 TextBox 控件中。


本范例将两道 SELECT 表达式指派给 SqlCommand 对象的 CommandText 属性,因此在使用 ExecuteReader 方法执行数据命令后会传回两个结果集。我们藉由调用 SqlDataReader 对象的 NextResult 方法来顺序处理各个结果集,而在处理个别的结果集时,则调用 SqlDataReader 对象的 GetName 方法来取得字段名称(亦即 myReader.GetName(i)),并位置顺序传递给 SqlDataReader 对象来取得字段的数据内容(亦即 myReader[i])。


特别要说明的是,使用 Using 表达式来执行数据命令,产生 SqlDataReader 对象,并传回多个数据结果集之后,如果搭配 Do..While 循环来取得结果集所有数据记录之各字段的名称与字段的内容时,会出现「当目前没有资料时,尝试读取无效」的错误信息。


怎么会发生这个问题呢?问题就出在 Do…While 循环身上。Do…While 循环的特色是,不论指定的判断表达式之结果是 True 还是 False,至少都会将 { } 内的程序代码区块执行一次。换句话说,在没有执行 myReader.Read() 函式之前,如果先执行 myReader.GetName(i) 函式来取得数据,当然就会发生错误。


要解决这个问题,请您将原本的 Do…While 循环改写为 While 循环,判断式一样可以利用 myReader.Read()。相关程序代码撰写于窗体的 Load 事件处理例程中,列示如下:


private void CH6_DemoForm010_Load(object sender, EventArgs e)
{
...
try
{
// 建立连接。
using (SqlConnection con = new
SqlConnection(connectStringBuilder.ConnectionString))
{
// 建立数据命令对象(亦即SqlCommand 对象)。
SqlCommand foxCMD = new SqlCommand();

foxCMD.Connection = con;

// 将两道SELECT 表达式指派给CommandText 属性,
// 此举将使得数据命令会传回两个结果集。
foxCMD.CommandText = "SELECT * FROM 章立民研究室;SELECT * FROM 客户";

// 开启连接。
con.Open();

int resultSetCounter = 1;
StringBuilder s = new StringBuilder();

// 执行会传回多个结果集的数据命令。
using (SqlDataReader myReader = foxCMD.ExecuteReader())
{
bool fNextResult = true;

// 顺序处理各个结果集。
do
{
...
switch (resultSetCounter)
{
case 1:
s.AppendLine("「章立民研究室」数据表的数据记录");
break;
case 2:
s.AppendLine("「客户」数据表的数据记录");
break;
}
...
// 取得结果集所有数据记录之各字段的名称与字段的内容。
if (myReader.HasRows)
{
while (myReader.Read())
{
for (int i = 0; i < myReader.FieldCount; i++)
{
s.AppendLine(myReader.GetName(i) + ": " + myReader[i].ToString());
}
...
}
}

// 将数据读取器前移到下一个结果集。
fNextResult = myReader.NextResult();

resultSetCounter += 1;
}
while (fNextResult);

// 将所取得的数据指派给TextBox 控件的Text 属性。
txtInfo.Text = s.ToString();
}
}
}
...
}


章立民研究室敬上


期待更多精彩,敬请关注:






添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.