尝试通过 Dapper 插入表(文本列),并从 Informix 收到错误:
Illegal attempt to use Text/Byte host variable
我写了一个小程序来模拟这个,但仍然遇到问题。
我们当前无法使用 Informix 驱动程序,因为它们不适合我们的需求。
using Dapper;
using System;
using System.Data.Odbc;
namespace DapperParamsTest
{
class Program
{
static void Main(string[] args)
{
OdbcConnection conn = new System.Data.Odbc.OdbcConnection("Driver={IBM INFORMIX ODBC DRIVER (64-bit)}; Host=bylgia; Server=bylgia; Service=sqlexec; Protocol=onsoctcp; Database=DATABASE; Client_Locale=en_US.CP1252; DB_LOCALE=en_GB.1252");
var dynParams = new DynamicParameters();
dynParams.Add("np_c_ref",-1);
dynParams.Add("np_np_type","T");
dynParams.Add("np_text", System.Text.Encoding.Default.GetBytes("TEXT INPUT"), System.Data.DbType.Binary);
conn.Execute("INSERT INTO notepads (np_c_ref, np_type,np_text) VALUES (?,?,?)",dynParams);
Console.WriteLine("Written");
Console.ReadLine();
}
}
}
表结构:
CREATE TABLE notepad
(
np_c_ref int,
np_type char(1),
np_text TEXT
)
这个问题实际上可能比我的其他答案假设的要简单得多;我刚刚注意到你说该专栏是TEXT
,但你正在传递它byte[]
。如果你想要这样,你可能应该使用BYTE
数据类型。如果你想使用TEXT
- 只需传递它string
(i.e. "TEXT INPUT"
)然后忘记Encoding
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)