|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
实不相瞒,Java是我见过的执行效率最低的程序设计语言,前不久在CSDN论坛上有个评测,计算9999的阶乘,同样的循环算法,Java的耗时是.NET的5倍。ado|毛病
图表1与2所示的程序树模怎样获得数据命令所传回的两个了局集,并将这两个了局集之一切数据纪录之一切字段的内容显现于窗体上的TextBox控件中。
本典范将两道SELECT表达式指派给SqlCommand工具的CommandText属性,因而在利用ExecuteReader办法实行数据命令后会传回两个了局集。我们藉由挪用SqlDataReader工具的NextResult办法来按次处置各个了局集,而在处置一般的了局集时,则挪用SqlDataReader工具的GetName办法来获得字段称号(亦即myReader.GetName(i)),并地位按次传送给SqlDataReader工具来获得字段的数据内容(亦即myReader)。
出格要申明的是,利用Using表达式来实行数据命令,发生SqlDataReader工具,并传回多个数据了局集以后,假如搭配Do..While轮回来获得了局集一切数据纪录之各字段的称号与字段的内容时,会呈现「当今朝没有材料时,实验读取有效」的毛病信息。
怎样会产生这个成绩呢?成绩就出在Do…While轮回身上。Do…While轮回的特征是,不管指定的判别表达式之了局是True仍是False,最少城市将{}内的程序代码区块实行一次。换句话说,在没有实行myReader.Read()函式之前,假如先实行myReader.GetName(i)函式来获得数据,固然就会产生毛病。
要办理这个成绩,请您将底本的Do…While轮回改写为While轮回,判别式一样能够使用myReader.Read()。相干程序代码撰写于窗体的Load事务处置例程中,列示以下:
privatevoidCH6_DemoForm010_Load(objectsender,EventArgse)
{
...
try
{
//创建毗连。
using(SqlConnectioncon=new
SqlConnection(connectStringBuilder.ConnectionString))
{
//创建数据命令工具(亦即SqlCommand工具)。
SqlCommandfoxCMD=newSqlCommand();
foxCMD.Connection=con;
//将两道SELECT表达式指派给CommandText属性,
//此举将使得数据命令会传回两个了局集。
foxCMD.CommandText="SELECT*FROM章立平易近研讨室;SELECT*FROM客户";
//开启毗连。
con.Open();
intresultSetCounter=1;
StringBuilders=newStringBuilder();
//实行会传回多个了局集的数据命令。
using(SqlDataReadermyReader=foxCMD.ExecuteReader())
{
boolfNextResult=true;
//按次处置各个了局集。
do
{
...
switch(resultSetCounter)
{
case1:
s.AppendLine("「章立平易近研讨室」数据表的数据纪录");
break;
case2:
s.AppendLine("「客户」数据表的数据纪录");
break;
}
...
//获得了局集一切数据纪录之各字段的称号与字段的内容。
if(myReader.HasRows)
{
while(myReader.Read())
{
for(inti=0;i<myReader.FieldCount;i++)
{
s.AppendLine(myReader.GetName(i)+":"+myReader.ToString());
}
...
}
}
//将数据读取器前移到下一个了局集。
fNextResult=myReader.NextResult();
resultSetCounter+=1;
}
while(fNextResult);
//将所获得的数据指派给TextBox控件的Text属性。
txtInfo.Text=s.ToString();
}
}
}
...
}
章立平易近研讨室敬上
等候更多出色,敬请存眷:
数据挖掘有点高深的,主要估计就是使用一些算法提取一些实用的数据。学好数据挖掘的话可以应聘baidu或者google,但是一般人家对算法的要求听高的。你最好还是学点应用型的吧。这种主要是研究型的。 |
|