0

我的查询看起来像:

string str = string.Format("Insert into [MyDB].[dbo].[tlb1] ([file_path],[CONTENT1],[CONTENT2]) values ('{0}','{1}','{2}');", fullpath, _val[0], _val[1]);

现在,当我将数据插入数据库时​​,如果array _val[]它包含英语数据,它会正确插入,但是当数组在数据库中包含俄语数据时,这会显示类似??????????????????????? Is there a way to insert data in Russian Language from an array。

4

4 回答 4

2

根据这个(存档的)微软支持问题:

在 SQL Server 中处理 Unicode 字符串常量时,必须在所有 Unicode 字符串前面加上前缀 N

于 2012-05-15T11:11:03.377 回答
1

首先,您应该使用准备好的语句并让数据库驱动程序正确插入占位符(即SqlCommand带参数)。然后问题应该会消失(以及任何潜在的 SQL 注入问题)。

作为您的情况的快速修复:为您插入的字符串文字添加前缀N

... values (N'{0}',N'{1}',N'{2}')

这会导致文字是 Unicode 文字,而不是任意遗留代码页,从而阻止从 Unicode 转换为遗留代码页(这会导致无法表示的字符出现问号)。

于 2012-05-15T11:11:45.960 回答
0

似乎列[Content1]和的数据类型[Content2]nchar. 您应该转换nvarchar用于存储 unicode 数据的列。

于 2012-05-15T10:57:02.473 回答
0

首先,您必须在服务器上看到数据库代码页。可能是数据库中的非 Unicode CP,但来自您的应用程序的数据采用 Unicode 格式。

于 2012-05-15T10:59:18.670 回答