重置数据库数据的方法存在问题。
在我们SqlCommand
的命令文本中
...
INSERT INTO DA VALUES('lblUsername', 'Æ');
INSERT INTO DA VALUES('lblPassword', 'Ø');
...
这些特殊字符将替换为?
。
但是,如果我们将Æ
作为参数插入
SqlCommand cmd = new SqlCommand();
cmd.Connection = Connection;
cmd.CommandText = "INSERT INTO Customers VALUES(@value)";
cmd.Parameters.AddWithValue("@value", "æ");
正确插入了æ
并被视为æ
而不是?
如何做到这一点,是否可以在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');
答案 0 :(得分: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程序员应该阅读的最重要的条带。
答案 1 :(得分:0)
您应该知道如何在SQL中处理ASCII字符。 如果直接使用'Æ',SQL不知道它是什么,只知道它的ASCII数。 如果使用String,SQL将直接获取信息。