当前位置:C++技术网 > 资讯 > 架设sql server数据库中的表的注意事项

架设sql server数据库中的表的注意事项

更新时间:2017-04-09 00:30:21浏览次数:1+次

使用ADO.NET进行数据库操作时,遇到数据类型为nText的字段,插入和更新字段信息,或者以该字段为查询条件时,如果你直接使用一个C#里面的String数据类型对其赋值,那“恭喜你”,你将被毫不留情的得到如下结果:

      “数据类型 ntext 和 varchar 在 equal to 运算符中不兼容的错误信息”

   ntext和nvarchar,这两个数据类型在数据库中是完全不同的,所以无法在他们之间进行比较操作,尤其是ntext,很多操作都不能做,就算是两个ntext类型,也没有办法进行比较操作。然而要对nText类型的字段赋予nvarchar类型的值,或者进行一个条件是ntext字段与nvarchar字段进行比较的sql语句的查询,当然无法进行。

      而C#中却只有使用String类型来表示nText,nVarchar,Text,Varchar等类型的数据,所以从C#方面来解决这个问题,显然是行不通的,那就只有从T-SQL方面入手了。方法有两个:

     1.直接改数据库字段类型,这种方式治标不治本,不推荐使用!因为既然使用了nText和Text类型,说明该字段的数据长度比较大,不好预估,当然SQLserver2005以上 的nvarchar(max) 可以存放2G的内容,足够用来替换nText类型了。

     2.使用T-SQL函数 cast 或者 convert 转换nText字段的数据类型:

     (1)更新语句:

cast函数:    update tb_test set cast([A] as nvarchar(max))='xxx'

convert函数:update tb_test set convert(nvarchar(max),[A])='xxx'

     (2)插入语句:

           cast函数:     insert into tb_test([A]) where cast(’xxx’ as nvarchar(max)) 

convert函数:insert into tb_test([A]) where convert(nvarchar(max),’xxx’)

     (3)查询语句:

           cast函数:     select * from tb_test where cast([A] as nvarchar(max))=’xxx’

           convert函数:select * from tb_test where convert(nvarchar(255),test)=’xxx’