alter   table   SubsidizePorject   add   ProjectTotalMoney   nvarchar(2000)这个是对一个表进行添加列。在数据库里执行是可以的。但是在C#程序中,就会出现:找不到对象 "SubsidizePorject",因为它不存在或者您没有所需的权限。这个问题
怎么解决?
SQL数据库C#添加列

解决方案 »

  1.   

    --加上数据库限定试试
    alter table  databasename..SubsidizePorject  
    add  ProjectTotalMoney  nvarchar(2000)
    --权限相关,检查是否有表结构更改权限
      

  2.   


    C#连接的账号,和我登录sql的账号是一样的。
      

  3.   

    你在sqlserver建一个表,然后在C# drop table,看看是不是没有权限。或者在C#中select * from SubsidizePorject  看看会不会同样报错。
      

  4.   

    那你把你的C#连接账号,默认指向你的库,而不要指向master
      

  5.   


    这个是连接字符串:<add name="connString" connectionString="Server=192.168.0.2;Database=NGO;User ID=sa;Password=123456"/>我要操作的数据库,也是NGO.同样的语句在sql数据库中是可以的。但是在c#中就是不行。。
      

  6.   

    sa登录之后默认是指向master的,如果不use或者手动选择库,你哪些语句都会在master里面执行
      

  7.   


    这一次,我在C#中加上了:use NGO go  之后,出现了这个问题:在 sysdatabases 中找不到数据库 'NGO' 所对应的条目。没有找到具有该名称的条目。请确保正确地输入了该名称。
      

  8.   


    这一次,我在C#中加上了:use NGO go  之后,出现了这个问题:在 sysdatabases 中找不到数据库 'NGO' 所对应的条目。没有找到具有该名称的条目。请确保正确地输入了该名称。但是我把C#中的sql语句复制到数据库中,还是可以的。
      

  9.   

    use NGO
    go
    这个go要换行的,比较省事的方法是创建一个另外的sql身份验证账号,比如devuser,然后给NEO库一个DB_Owner权限,C#换这个账号来连数据库
      

  10.   

    这个问题是我马虎了,我忘了换连接字符串了。谢谢了。
    现在还有个小问题:就是我添加了一列,它返回的是什么呢?比如说:我添加一行,返回受影响的行数。。
    我查询,返回数据集。那这个添加一列,又返回什么类型的呢?我在C#后台,又要用什么来接收呢?我目前用的是int count=ExcuteNoneQuery()      但是,返回来的是-1  
      

  11.   

    C#我很久没用,忘得七七八八了,但是对于这个问题,你可能要考虑捕获“成功与否”,来判断。或者用try catch来捕获是否有错误,也可以在sql语句中做文章,比如if 判断是否存在该列在对应的表上,如果没有就执行alter,如果有就跳过,不过我个人不是很建议在编程语言中使用DDL语句。用dml没问题
      

  12.   


    嗯,好的,谢谢了。我用的是try catch