只要把参数的类型指定为OracleType.Blob就会报错。
错误内容:
无法获取错误消息(-1) (100)。
代码如下:
static void Main(string[] args)
{
string sConnection = "User ID=test;Data Source=handing;Password=test";
OracleConnection con = new OracleConnection(sConnection);
con.Open();
Console.WriteLine("打开成功!"); OracleCommand cmd = con.CreateCommand();
OracleTransaction transaction = con.BeginTransaction();
cmd.Transaction = transaction;
try
{
// 直接写要插入的值就没问题。但是参数的长度还是不能超过4000字节
//string SQL = "INSERT INTO clob_test2(id,blob_test) VALUES(111,'6666666')";
//cmd.CommandText = SQL;
//cmd.ExecuteNonQuery(); // 使用参数就报错
string SQL = "INSERT INTO clob_test2(id,blob_test) VALUES(111,:test)";
cmd.CommandText = SQL;
byte[] bText = { 0x60, 0x60, 0x60, 0x60, 0x60 };
cmd.Parameters.Add("test", OracleType.Blob);
cmd.Parameters["test"].Value = bText;
cmd.ExecuteNonQuery(); //在这里报错 transaction.Commit();
Console.WriteLine("成功!");
}
catch(System.Data.OracleClient.OracleException ex)
{
transaction.Rollback();
Console.WriteLine("失败!" + ex.Message);
} con.Close();
Console.WriteLine("结束");
Console.Read();
}
错误内容:
无法获取错误消息(-1) (100)。
代码如下:
static void Main(string[] args)
{
string sConnection = "User ID=test;Data Source=handing;Password=test";
OracleConnection con = new OracleConnection(sConnection);
con.Open();
Console.WriteLine("打开成功!"); OracleCommand cmd = con.CreateCommand();
OracleTransaction transaction = con.BeginTransaction();
cmd.Transaction = transaction;
try
{
// 直接写要插入的值就没问题。但是参数的长度还是不能超过4000字节
//string SQL = "INSERT INTO clob_test2(id,blob_test) VALUES(111,'6666666')";
//cmd.CommandText = SQL;
//cmd.ExecuteNonQuery(); // 使用参数就报错
string SQL = "INSERT INTO clob_test2(id,blob_test) VALUES(111,:test)";
cmd.CommandText = SQL;
byte[] bText = { 0x60, 0x60, 0x60, 0x60, 0x60 };
cmd.Parameters.Add("test", OracleType.Blob);
cmd.Parameters["test"].Value = bText;
cmd.ExecuteNonQuery(); //在这里报错 transaction.Commit();
Console.WriteLine("成功!");
}
catch(System.Data.OracleClient.OracleException ex)
{
transaction.Rollback();
Console.WriteLine("失败!" + ex.Message);
} con.Close();
Console.WriteLine("结束");
Console.Read();
}
vs 2005