首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于ADO.NET的,该怎么处理

2012-01-29 
关于ADO.NET的 privateSystem.Data.SqlClient.SqlConnectionsqlConnection1privateSystem.Data.SqlClient

关于ADO.NET的

private   System.Data.SqlClient.SqlConnection   sqlConnection1;
private   System.Data.SqlClient.SqlDataAdapter   sqlDataAdapterReader;
private   System.Data.SqlClient.SqlDataAdapter   sqlDataAdapterBook;
private   System.Data.SqlClient.SqlDataAdapter   sqlDataAdapterPublish;

现每个SqlDataAdapter类分别对应同一数据库的表:Reader,Book,Publish
我是用VS.NET工具生成SqlDataAdapter的,设置各个SqlDataAdapter类对象的查询时,
都是SELECT   *   FROM   对应的表名,这样工具就生成了四个:
private   System.Data.SqlClient.SqlCommand   sqlSelectCommand3;
private   System.Data.SqlClient.SqlCommand   sqlInsertCommand3;
private   System.Data.SqlClient.SqlCommand   sqlUpdateCommand3;
private   System.Data.SqlClient.SqlCommand   sqlDeleteCommand3;
private   System.Data.SqlClient.SqlCommand   sqlSelectCommand1;
private   System.Data.SqlClient.SqlCommand   sqlInsertCommand1;
private   System.Data.SqlClient.SqlCommand   sqlUpdateCommand1;
private   System.Data.SqlClient.SqlCommand   sqlDeleteCommand1;
private   System.Data.SqlClient.SqlCommand   sqlSelectCommand2;
private   System.Data.SqlClient.SqlCommand   sqlInsertCommand2;
private   System.Data.SqlClient.SqlCommand   sqlUpdateCommand2;
private   System.Data.SqlClient.SqlCommand   sqlDeleteCommand2;
private   System.Data.SqlClient.SqlCommand   sqlSelectCommand4;
private   System.Data.SqlClient.SqlCommand   sqlInsertCommand4;


private   void   btnQuery_Click(object   sender,   System.EventArgs   e)//一个查询按钮
{
SqlString= "select   *   from "+this.comboDataTable.Text+ "where ";
SqlString=SqlString+this.comboDataItem.Text+this.comboCondition.Text+this.textValue.Text;     //生成查询语句
switch(this.comboDataTable.SelectedText)//请大家看清楚这里啦,根据条件,只能有一种情况出现的
{
case   0:
this.sqlSelectCommand1.CommandText=SqlString;
break;
case   1:
this.sqlSelectCommand2.CommandText=SqlString;
break;
case   2:
this.sqlSelectCommand3.CommandText=SqlString;
break;
case   3:
this.sqlSelectCommand4.CommandText=SqlString;
break;
}
try
{
this.LoadDataSet();
this.dataGrid1.DataSource=this.objDataSetQuery;
this.dataGrid1.DataMember=this.comboDataTable.Text.Trim();
}

catch(System.Exception   e)
{
this.ErrorHandle(e);
}
}


private   void   LoadDataSet()
{
DataSetBookQuery   objDataSetTemp=new   DataSetQuery();//这里生成一个DataSet数据集
try
{
this.FillDataSet(objDataSetTemp);

}
catch   (System.Exception   E)  
{
//   在此处添加错误处理代码。
this.ErrorHandle(E);
}
try
{
this.objDataSetQuery.Clear();
this.objDataSetQuery.Merge(objDataSetTemp);
}
catch(System.Exception   E)  
{
//   在此处添加错误处理代码。
this.ErrorHandle(E);
}

}

private   void   FillDataSet(DataSetBookQuery   dataset)//参数为DataSet数据集
{
dataset.EnforceConstraints=false;
try                                 {
this.sqlConnection1.Open();
this.sqlDataAdapterReader.Fill(dataset);
this.sqlDataAdapterBook.Fill(dataset);
this.sqlDataAdapterPublish.Fill(dataset);


this.sqlDataAdapterBorrow.Fill(dataset);

}
catch(System.Exception   E)
{
this.ErrorHandle(E);
}

finally
{
dataset.EnforceConstraints=true;
this.sqlConnection1.Close();
}
}
//嗯,就是这里我看不明白啦,上面btnQuery_Click函数里,不是只生成一个查询命令的吗?这里却要用几个sqlDataAdapter类来填充数据集,比如说   sqlSelectCommand1有效,那么执行FillDataSet函数后,数据集dataset是不是只包含sqlSelectCommand1的查询结果,还是也包含其它三个sqlSelectCommand的查询结果呢,前面已说过四个sqlSelectCommand的查询设计原先都是用工具设成SELECT   *   FROM   对应的表名的,
并且用工具将四个sqlDataAdapter生成同一数据集DataSetBookQuery的.



[解决办法]
看了半天,我的理解是,因为你用的是SWITCH,所以只有一个SQLSECECTCOMMAND得到了SQLSTRING,所以它包含的应该就只有一个的数据
[解决办法]
刚才问了下高手,说不会出错,但会出异常,也可以编译过去

热点排行