有个数据库,名为aa_bb_cc和存储过程,名为sp_select:
存储过程:
create .......
@dbName varchar(100)
AS
declare @tableName varchar(100)
set @tableName =".dbo.asdf";
exec('select * from @dbName+@tableName')现在我用Sqldataadapter和sqlCommandBuilder进行数据库操作如下:
sqlcommand cmd=new sqlcommand("sp_select",con);
cmd.params...add("@dbName"sqldbtype.....,"@dbName")
cmd.params..["@dbName"].value="[aa_bb_cc]"
cmd.commandtype=......;
Sqldataadapter da=new Sqldataadapter(cmd);
sqlCommandBuilder cb=new sqlCommandBuilder(da);
con.open()
da.fill(dataset) //正确
da.update(dataset)//错误,因为使用了aa_bb_cc的数据库名而且没加[],正确的应该为([aa_bb_cc])
con.close();
原因应该是da.update自动调用时把我刻意加了[]的[aa_bb_cc]数据库名中的”[]“去掉造成了数据库名错误。各位应该怎么解决啊????

解决方案 »

  1.   

    aa_bb_cc又不是保留字,不用加[]了
      

  2.   

    可是我不加[]的话,比如传@dbName的参数值为“aa_bb_cc”就出错,一定要“[aa_bb_cc]”才对
      

  3.   

    不好意思,误导大家了,原因应该是在SELECT * FROM 数据库名.dbo.表名中,数据库名不能用数字开头,如果用数字开头又没加[]的话就出错,比如说SELECT * FROM 65pahi.dbo.table就不对了,
    不知道大家有什么解决的方法吗?