联接方式:OleDb
联接:PROVIDER=IBMDA400; DATA SOURCE=MyHost;USER ID=test_user;PASSWORD=123456;DEFAULT COLLECTION=test_db
其中一个表如下
create table aa
{
  id integer not null,
  pict blob
}需要插入图片文件,使用以下方法
FileStream fs = new FileStream("tmp.bmp",FileMode.OpenOrCreate);
BinaryReader r = new BinaryReader(fs);
long size = r.BaseStream.Seek(0,SeekOrigin.End);
r.BaseStream.Seek(0,SeekOrigin.Begin);
byte[] buffer = r.ReadBytes((int)size);
r.Close();
fs.Close();

System.Data.OleDb.OleDbCommand tmpComm= new System.Data.OleDb.OleDbCommand();
tmpComm.CommandText = "update aa set pict = ? where id= 100001";
System.Data.OleDb.OleDbParameter tmpPara = new System.Data.OleDb.OleDbParameter("pict",System.Data.OleDb.OleDbType.Binary,buffer.Length);
tmpPara.Value = buffer;System.Data.OleDb.OleDbConnection tmpConn 
= new System.Data.OleDb.OleDbConnection(connString);
tmpComm.Connection = tmpConn;
tmpComm.Parameters.Add(tmpPara);int i=1;
try
{
         tmpConn.Open();
tmpComm.ExecuteNonQuery();
tmpComm.Dispose();
tmpConn.Close();
i = -1;
}
catch
{
tmpComm.Dispose();
if(tmpConn.State ==  ConnectionState.Open)
tmpConn.Close();
}if(i > 0)
{
MessageBox.Show("图像处理失败!");
}
else
{
MessageBox.Show("图像处理成功!");
}
现有以下问题:
1、图片文件不能大,否则图片将被截取一部分;
2、程序第一次执行正常,再次执行tmpComm.ExecuteNonQuery()出现异常
请高手指教。

解决方案 »

  1.   

    System.Data.OleDb.OleDbParameter("pict",System.Data.OleDb.OleDbType.Binary,buffer.Length);
    是不是你设置了参数的长度才造成图片丢失啊,你去掉长度的参数试试。
      

  2.   

    你看看第二次执行ExecuteNonQuery()是报什么错,把异常捕获看看是什么信息。
      

  3.   

    Connect Error
    我用 vpn 远程联接服务器,需要断开vpn 再重新联接,就可以再用一次。