C#学习教程:非法尝试使用Text/Byte主变量——插入TEXT列:非法尝试使用文本/字节主机变量我已经编写了一个小程序来模拟这个,但我仍然面临这个问题。我们目前无法使用Informix驱动程序,因为它们不适合我们的需要。使用Dapper;使用系统;使用System.Data.Odbc;namespaceDapperParamsTest{classProgram{staticvoidMain(string[]args){OdbcConnectionconn=newSystem.Data.Odbc.OdbcConnection("Driver={IBMINFORMIXODBCDRIVER(64-bit)};Host=bylgia;Server=bylgia;服务=sqlexec;协议=onsoctcp;数据库=DATABASE;Client_Locale=en_US.CP1252;DB_LOCALE=en_GB.1252");vardynParams=newDynamicParameters();动态参数。添加(“np_c_ref”,-1);dynParams.Add("np_np_type","T");dynParams.Add("np_text",System.Text.Encoding.Default.GetBytes("文本输入"),System.Data.DbType.Binary);conn.Execute("插入记事本(np_c_ref,np_type,np_text)VALUES(?,?,?)",dynParams);Console.WriteLine("已写");控制台.ReadLine();}}}表结构:CREATETABLEnotepad(np_c_refint,np_typechar(1),np_textTEXT)这个问题实际上可能比我的其他答案假设的要简单得多;我刚刚注意到你说列是文本,但你传递的是一个字节[]。如果需要,您应该使用BYTE数据类型。如果你想使用TEXT-只需传递字符串(即“TEXTINPUT”)而忘记编码。我不确定我是否知道我需要重置此设置...但是,这里有一些尝试:看起来Informix需要位置参数。最近的dapper版本实际上支持修改后的语法以使其更加方便。你能试试这个吗:conn.Execute("INSERTINTOnotepads(np_c_ref,np_type,np_text)VALUES(?np_c_ref?,?np_np_type?,?np_text?)",dynParams);另外:尝试使用“T”而不是“T”(字符和字符串)。如果问题是参数顺序,这可能会有所帮助。另请注意:如果可行,您还可以使用更方便的匿名类型方法来指定参数:conn.Execute("INSERTINTOnotepads(np_c_ref,np_type,np_text)VALUES(?np_c_ref?,?np_np_type?,?np_text?)",new{np_c_ref=-1,np_np_type="T",np_text=System.Text.Encoding.Default.GetBytes("TEXTINPUT")});最后的最终想法:很少有编码。默认值是正确的或适当的场景。除非错误,否则很少使用。以上就是C#学习教程:非法尝试使用Text/Byte主变量-插入TEXT列分享全部内容,如果对大家有用还需要详细了解C#学习教程,希望大家点赞更多关注~本文来自网络收集,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
