Sql server &引用;不允许的隐式转换“;将Unicode字符串与ADO参数化查询一起使用时:是否有;使用任何兼容的“;数据类型?
我正在尝试参数化查询,例如:Sql server &引用;不允许的隐式转换“;将Unicode字符串与ADO参数化查询一起使用时:是否有;使用任何兼容的“;数据类型?,sql-server,sql-server-2008-r2,ado,Sql Server,Sql Server 2008 R2,Ado,我正在尝试参数化查询,例如: INSERT INTO Trunions (Encabulator) VALUES (?) 这来自(示例)查询: 现在,只要SQL Server数据库表包含某种兼容的字符串列,此查询就会运行: char(300) nchar(300) varchar(300) nvarchar(300) text ntext varchar(最大值) nvarchar(最大值) 我原来的,函数查询将起作用。一旦我参数化查询,代码就不再工作: String sql = "INS
INSERT INTO Trunions (Encabulator) VALUES (?)
这来自(示例)查询:
现在,只要SQL Server数据库表包含某种兼容的字符串列,此查询就会运行:
char(300)
nchar(300)
varchar(300)
nvarchar(300)
text
ntext
varchar(最大值)
nvarchar(最大值)
String sql = "INSERT INTO Trunions (Encabulator) VALUES (?)";
String value = "Mẫrsểl vằnęs";
Command cmd = new Command();
...
cmd.Set_CommandText(sql);
cmd.Set_CommandType(adCmdText);
cmd.Parameters.Append(cmd.CreateParameter("param1", adLongVarWChar, adParamInput, -1, value);
cmd.Execute(out recordsAffected, Null, adCmdText | adExecuteNoRecords);
SQL Server抱怨参数类型与列数据类型不匹配(即地毯与窗帘不匹配):
不允许从数据类型%s隐式转换为数据类型%s,表“%s”,列“%s”。使用CONVERT函数运行此查询 在本例中,我尝试使用“最佳”(即最具包容性的数据类型):
adLongVarWChar
但我需要的是可以替代“任意长度unicode字符串”的数据类型
什么ADO参数类型将保留在SQL Server字符串列中
注意:
- ADO,而不是ADO.net
- 以及对解决方案的无限希望。这个问题是关于一个通用的“文本”ado数据类型(变量?未知?字符串?)(是的,谁把我的标题改成了什么)
该死的。当使用ADO参数化的Unicode字符串时,我在谷歌上做了更多的搜索:“不允许隐式转换”。“嘿,这正是我所经历的!哦,等等。:(我讨厌这种情况:-)
String sql = "INSERT INTO Trunions (Encabulator) VALUES (?)";
String value = "Mẫrsểl vằnęs";
Command cmd = new Command();
...
cmd.Set_CommandText(sql);
cmd.Set_CommandType(adCmdText);
cmd.Parameters.Append(cmd.CreateParameter("param1", adLongVarWChar, adParamInput, -1, value);
cmd.Execute(out recordsAffected, Null, adCmdText | adExecuteNoRecords);