怎么样C#语句更改数据库某一列的数据类型(列有默认值)

时间:2022-05-31 09:56:23
我用C#编写的程序在bj数据库的project表里添加了一列IsSigned,bit数据类型,默认值0;现在想把该列改为varchar数据类型,默认值为“否”。失败。想删除该列也不行。怎么办?前提不用数据库自带的管理器。

5 个解决方案

#1


其实就是用sql语句alter table的某列。如果里面有数据的话,需要将数据清空,再修改类型。

#2


在程序中用数据命令是可以的,前提是要符合他的操作要求,你可以将里面的数据全清成空,再修改他的类型,然后再赋值回去.

#3


主要是修改的列有默认值约束

#4


http://database.51cto.com/art/201009/228144.htm。你可以在数据库存储过程中封装好,然后C#中调用一下就o了。

#5


 string ss = "declare @name varchar(50)" +
                        " select  @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault" +
                        " where a.id = object_id('Project')" +
                        " and a.name ='IsSigned'" +
                        " exec('alter table Project drop constraint' + @name)" +
                        " exec('alter table Project drop column IsSigned')";
这个也不行,显示错误:
'constraintDF__Project__IsSigne__6ABAD62E' 不是约束。
未能除去约束。请参阅前面的错误信息。

#1


其实就是用sql语句alter table的某列。如果里面有数据的话,需要将数据清空,再修改类型。

#2


在程序中用数据命令是可以的,前提是要符合他的操作要求,你可以将里面的数据全清成空,再修改他的类型,然后再赋值回去.

#3


主要是修改的列有默认值约束

#4


http://database.51cto.com/art/201009/228144.htm。你可以在数据库存储过程中封装好,然后C#中调用一下就o了。

#5


 string ss = "declare @name varchar(50)" +
                        " select  @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault" +
                        " where a.id = object_id('Project')" +
                        " and a.name ='IsSigned'" +
                        " exec('alter table Project drop constraint' + @name)" +
                        " exec('alter table Project drop column IsSigned')";
这个也不行,显示错误:
'constraintDF__Project__IsSigne__6ABAD62E' 不是约束。
未能除去约束。请参阅前面的错误信息。