本人用ASP.NET(C#)实现图片存储至oracle(8i)的blob数据类型中,用Microsoft OLE DB Provider 做连接。
表结构如下:pic_id(int),pic_description(blob),pic_info(blob)测试的时候,通过windows xp测试存储成功,而把代码放到windows 2000 server上面,经过编译后添加数据时则发生ora-01036的错误?经调试,其中pic_description字段内容存储成功,而pic_info字段的内容存储失败。同样的代码,同样的sql语句,同样的数据库,不同的环境导致了不同的结果!
急盼热心人提供解决方案!3x!
表结构如下:pic_id(int),pic_description(blob),pic_info(blob)测试的时候,通过windows xp测试存储成功,而把代码放到windows 2000 server上面,经过编译后添加数据时则发生ora-01036的错误?经调试,其中pic_description字段内容存储成功,而pic_info字段的内容存储失败。同样的代码,同样的sql语句,同样的数据库,不同的环境导致了不同的结果!
急盼热心人提供解决方案!3x!
private string str=ConfigurationSettings.AppSettings["ORACLEConnectionString"];private string insertoper(byte[][] b,string sql)
{
Connect(); OleDbTransaction Tran;
Tran=objc.BeginTransaction();
try
{
OleDbCommand odb=new OleDbCommand(sql,objc);
for(int i=0;i<b.Length;i++)
{
string paraname="imageData"+i;
odb.Parameters.Add(paraname,OleDbType.Binary);
odb.Parameters[paraname].Value=b[i];
}
odb.Transaction=Tran;
odb.ExecuteNonQuery();/*==========这里报错=========*/
Tran.Commit(); return "1";
}
catch(Exception ex)
{
Tran.Rollback();
return ex.Message;
}
finally
{
Disconnect();
} }
private void Connect()
{
if(objc==null)
objc=new OleDbConnection(str); if(objc.State==ConnectionState.Closed)
objc.Open();
} private void Disconnect()
{
objc.Close();
}
用参数下标进行访问。不能用参数名!
这个问题应该.net的遗憾和不足。
2.try another win2000
将string paraname="imageData"+i;
改为:
string paraname=":imageData"+i;
oledbCmd.CommandType = CommandType.StoredProcedure;