问题描述
查看DataAdapter生成的updateCommandText和insertCommandText都是类似updatetb_nameset......这样的语句,这在指定了要操作的database的时候没任何问题。但是我这边的情况是,由于需要在多个数据库中操作,因此生成connection的时候没有指定数据库。如何才能让updateCommandText生成的语句里面的tablename能包含databasename,形如db_game.t_game这样的形式?另外我这样SqlDataAdapterda=newSqlDataAdapter(strSql,strConn);//strSql是一个指定的sql语句,strConn是连接串字符串SqlCommandBuilderbuilder=newSqlCommandBuilder(da);da.UpdateCommand=builder.UpdateCommand;//打印出来的da.UpdateCommandText是形如这样的字符串:“updatet_gameset...”.请问系统是怎么知道sql语句strSql指定的表是t_game,是怎么实现的?
解决方案
解决方案二:
1.链接不同数据库时connectionString是不同的,在生成DataAdapter时已经指定了connectionString你可以指定strConn,用枚举。2.当你写好strSql后用SqlCommandBuilderbuilder=newSqlCommandBuilder(da);时相当于系统写好了Update.CommandText=@"UPDATE[dbo].[CIPLR]SET[CILNR]=@CILNR,[CILNM]=@CILNMWHERE(CILNR=@Original_CILNR);SELECTCILNR,CILNMFROMQM_CIPLRWHERE(CILNR=@CILNR)"---------;这样的语句,并指定了connectionString。希望你再说确切些,还有你用的那种结构,三层结构???
解决方案三:
todu_weiminconnectionString里面没有设置initdatabase,直接是用SqlCommandBuilderbuilder=newSqlCommandBuilder(da);da.UpdateCommand=builder.UpdateCommand;执行update时候,提示nodatabaseselected。表面connection没有选择数据库增加一句:da.UpdateCmmand.CommandText="usedb_game;"+da.UpdateCmmand.CommandText//我用mysql数据库再执行update操作,就能更新正确!但是"usedb_game;"这句感觉很冗余。。。
解决方案四:
todu_weimin我用的是三层结构。但我的这个问题应该跟用什么结构没关系吧