C#字符串和VARCHAR和NVARCHAR

时间:2014-07-10 12:20:36

标签: c# sql-server

我很好奇C#如何解释/存储来自SQL Server的不同数据类型,然后存储在C#字符串变量中:

示例:

假设我有一个变量来保存从数据库调用中检索到的字符串值:

public string TransactionId {get; set;}

如果出现以下情况,TransactionId中的值是否会被表示为:

  1. SQL Server中的数据类型是VARCHAR(8位)
  2. SQL Server中的数据类型是NVARCHAR(16位)
  3. 只是想知道这两种不同的数据类型是如何存储在C#字符串类型中的。 C#将存储一个8位的VARCHAR值和一个16位的NVARCHAR

2 个答案:

答案 0 :(得分:3)

它们将存储在字符串类型中几乎完全相同。唯一的区别是UTF-16或更大的SQL DB中的格式化将会在数据库中占用更多的物理存储空间。如果您仅使用ASCII / UTF-8(任何8位有限字符集),则应存储为varchar。 C#中的字符串值将表示与nvarchar完全相同,varchar都可以本地转换为字符串。如果使用扩展字符并将其存储在nvarchar中,则字符串的唯一内容差异将是。这些不会存储在varchar中。

也只是提供信息; SQL类型中的var意味着大小将根据给定的varchar(n)内容动态地改变,其中n是它的最大大小。与例如varbinary(n)等

的工作原理相同

答案 1 :(得分:1)

你可以看看这里

http://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx

nvarchar和varchar映射到String

编辑:nvarchar,varchar,ntext,text,char,nchar都映射到String或Char []