| 发表于: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的. |
|
|
|
|