在.NET C#的SQL Server INSERT查询中如何正确使用前缀N?
问题修正方案
你现有写法存在两个核心错误:
- 直接写
N'+@description+'属于硬编码字符串拼接,根本没有调用你传入的参数值,执行后会直接把+@description+作为内容存入数据库,完全不符合预期 - N前缀仅用于SQL语句里直接写Unicode字符串字面量的场景(比如你给出的UPDATE示例里硬编码缅文的写法),参数化查询不需要在SQL语句中给参数加N''包裹
修正后的INSERT语句代码
sqlUtil.SqlDataUpdate(false, (@"INSERT INTO Incident_Info (incidentid, incidentdate, incidenttime, description, Salesmen_id, name, phone, email, address, cost, currency, solution, status) VALUES (@incidentid, @incidentdate, @incidenttime, @description, @salesmenid, @name, @phone, @email, @address, @cost, @currency, @solution, @status)"), SysController.dicParams);
额外注意事项
- 必须确保你的
Incident_Info表中description、name、address、solution这几个存储非英文字符的字段类型是NVARCHAR/NCHAR/NTEXT这类Unicode存储类型,如果字段本身是VARCHAR类型,就算写法正确也会丢失Unicode编码 - 确保
SysController.dicParams中添加上述几个字符串参数时,指定的数据库类型为对应Unicode类型(比如SqlDbType.NVarChar),不要用非Unicode的SqlDbType.VarChar
内容的提问来源于stack exchange,提问作者izoku
相关产品推荐
相关产品推荐

