0

重置我们的数据库数据的方法有问题。

SqlCommand我们的命令文本中

...
INSERT INTO DA VALUES('lblUsername', 'Æ');
INSERT INTO DA VALUES('lblPassword', 'Ø');
...

这些特殊字符被替换为?.

但是,如果我们将Æwith 作为参数插入

 SqlCommand cmd = new SqlCommand();
 cmd.Connection = Connection;
 cmd.CommandText = "INSERT INTO Customers VALUES(@value)";

 cmd.Parameters.AddWithValue("@value", "æ");

theæ被正确插入并被读取为 anæ而不是 ?

这怎么可能,是否可以在 上设置一个属性SqlCommand以避免使用SqlParameters插入我们所有的测试数据?

数据库是 microsoft sql server 10.0.1600。

表定义

CREATE TABLE DA(
KeyWord NVARCHAR(100) NOT NULL,
ValueText NVARCHAR(200) NOT NULL
);

插入表 DA

INSERT INTO DA VALUES('btnSaveChanges', 'Gem ændrigner');
4

2 回答 2

2

如果您知道您的字段将包含非 ASCII 字符,那么您最好开始使用为 Unicode “构建”的NCHAR/ NVARCHAR,因此如果有人想要一个阿拉伯用户名,系统将不会给出“随机”结果。

然后:

INSERT INTO DA VALUES('lblUsername', N'Æ');
INSERT INTO DA VALUES('lblPassword', N'Ø');

看到了N吗?这意味着Unicode字符串。

啊...请开始使用SqlParameter. 不使用它就像用剪刀跑步一样。我认为Exploits of a Mom是 SQL 程序员应该阅读的最重要的部分。

于 2013-08-09T07:35:25.963 回答
0

你应该知道 ASCII 字符在 SQL 中是如何处理的。如果直接使用'Æ',SQL不知道它是什么,只知道它的ASCII数字。如果使用 String ,SQL 直接获取信息。

于 2013-08-09T08:35:41.827 回答