09 Dec 2009

使用SQL语句更改数据表的默认值

以前还真没这么干过,都是手工去掉约束,再添加的,今天一边google一边搞啊搞啊的,最终下面这个脚本可以用了

alter table dbo.SOTransaction
    alter column UnitCostWithoutTax decimal(10, 2not null

go

declare @name varchar(1000)
declare @tablename varchar(1000)
declare @fieldname varchar(1000)

set @tablename = ‘SOTransaction’;
set @fieldname = ‘UnitCostWithoutTax’;

select @name = b.name from syscolumns a inner join sysobjects b
    on b.id=a.cdefault
where
    a.id= object_id(@tablename)
    and a.name=@fieldname
    and b.name like ‘DF%’
–print @name

exec(’ alter table SOTransaction drop constraint ‘ + @name);
go
alter table dbo.SOTransaction
    add constraint DF_SOTransaction_UnitCostWithoutTax default (0) for UnitCostWithoutTax

24 Mar 2006

关于Data Access Blok (SqlHelper.cs)使用时出现

关于Data Access Blok (SqlHelper.cs)使用时出现"对象必须实现 IConvertible/Object must implement IConvertible."异常

在使用低版本 Data Access Blok  时,出现如下异常
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

 

对象必须实现 IConvertible。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

 

异常详细信息: System.InvalidCastException: 对象必须实现 IConvertible。

 

源错误:

 
行 360:   
行 361:   //finally, execute the command.
行 362:   int retval = cmd.ExecuteNonQuery();
行 363:   
行 364:   // detach the SqlParameters from the command object, so they can be used again.

 

参考http://weblogs.asp.net/ssmith/archive/2003/08/19/24524.aspx#92222
做修改
the simple fix is to change line 93 to read:
commandParameters[i].Value = ((SqlParameter)parameterValues[i]).Value;

 

instead of:
commandParameters[i].Value = parameterValues[i];

 

正常工作。