2011-11-02 129 views
5

如果我想从C#中插入char(2)类型的数据库列。 我将在C#中使用什么数据类型?SQL char和C之间的转换#

如果使用下面的代码:

private static SqlParameter addParameterValue(string parameterName, ? parameterValue, SqlCommand command) 
    { 
     SqlParameter parameter = new SqlParameter(parameterName, SqlDbType.Char); 
     parameter.Value = parameterValue; 
     command.Parameters.Add(parameter); 
     return parameter; 
    } 

我会给的parameterValue什么类型的?

我已经有这样的方法时的parameterValue是字符串类型,所以告诉SqlDbType.Char和SqlDbType.Varchar的区别

回答

4

string将正常工作时,如果是2个字符,这可能是一个问题短

+0

所以只需要做一个字符串的长度检查? – ediblecode

+0

我认为SQL会按'字符串或二进制数据将被截断'而不是自动截断的方式抛出异常。取决于我认为的设置 – flipchart

5

charvarcharncharnvarchar实际上是字串

size有助于确定该字符串是多久?

的方式

char具有固定的长度,所以,如果你想拥有"1"char(2)内容将实际"1 "

varchar(2)"1"

n部分看台对于Unicode,因此这些字段中的所有内容都将采用Unicode。


通常我们使用nvarchar,以节省数据的一些空间,因为如果你有一个char(250)数据库将始终保存完整的长度,为空varchar(250)将一无所获。

在我们的编程语言,然后我们分别

"1".PadLeft(2); 
"1".PadRight(2); 

将输出" 1""1 "使用填充做什么char做,例如,在C#。

+1

我认为你的varchar示例是错误的。 –

1

尝试使用AddWithValue方法并将其作为字符串存储,

它只是一行。不需要有独立的方法。

command.Parameters.AddWithValue(parameterName, parameterValue); 
+0

非常感谢,这略微缩短了我的代码。尽管我继承了这种方法。 – ediblecode