非法尝试使用文本/字节主机变量-插入到TEXT列

尝试通过Dapper插入表(“文本列”),并从Informix获取错误:

非法尝试使用文本/字节主机变量

我已经编写了一个小程序来模拟这种情况,但我仍然遇到问题.

我们目前无法使用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-只需将字符串(即“ TEXT INPUT”)传递给它,而不必考虑编码.

转载注明原文:非法尝试使用文本/字节主机变量-插入到TEXT列 - 代码日志