您的位置:程序门 -> .net技术 -> c#



关于ado.net的


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于ado.net的[已结贴,结贴人:likevs]
发表于:2007-03-21 23:25:09 楼主

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的.

发表于:2007-03-21 23:59:261楼 得分:0
帮lz顶
发表于:2007-03-22 00:24:222楼 得分:10
看了半天,我的理解是,因为你用的是switch,所以只有一个sqlsecectcommand得到了sqlstring,所以它包含的应该就只有一个的数据
发表于:2007-03-22 08:49:183楼 得分:0
不懂你要问什么,帮你顶
发表于:2007-03-22 20:55:434楼 得分:0
liucy1983(liu.cy)  

被你看出来啦,我就是想问,如果只有一个sqlsecectcommand有效,那我在刚开始设置四个sqldataadapter类时,工具里的向导不是有个设置查询的选项的吗?我就是把那个查询选项选成:

现每个sqldataadapter类分别对应同一数据库的表:reader,book,publish
我是用vs.net工具生成sqldataadapter的,设置各个sqldataadapter类对象的查询时,
都是select   *   from   对应的表名

这是里的工具不是自己生成四个sqlsecectcommand的吗?
this.sqlconnection1.open();
this.sqldataadapterreader.fill(dataset);
this.sqldataadapterbook.fill(dataset);
this.sqldataadapterpublish.fill(dataset);
this.sqldataadapterborrow.fill(dataset);

如果只有一个有效,那另三个做什么?


执行时,难道无效?
发表于:2007-03-22 23:30:045楼 得分:10
刚才问了下高手,说不会出错,但会出异常,也可以编译过去
发表于:2007-03-24 00:56:176楼 得分:0
liucy1983(liu.cy)

请教我怎样才能把分加给你,短信息看不了,提示系统忙.


快速检索

最新资讯
热门点击