这是什么异常信息:无法保存;正被别的用户锁定。代码是要把PictureBox中的图片保存到数据库中。应用代码:
byte[] imageBytes = access.PicRead(Pic_CG);
string sql_img = "update yexxb set [zp]=(@img)  WHERE [ID] = " + ID + "";
int up_img = access.Execute_Img(sql_img,imageBytes); public int Execute_Img(string str,byte[] img)
            {
                Comm = new OleDbCommand(str, Conn);
                OleDbParameter paramPersonImage = new OleDbParameter("@img",System.Data.OleDb.OleDbType.Binary);
                paramPersonImage.Value = img;
                Comm.Parameters.Add(paramPersonImage);
                int R = Comm.ExecuteNonQuery();      出现异常:无法保存;正被别的用户锁定。
                Comm.Dispose();
                return R;            }

解决方案 »

  1.   

    打开OldDbConnection后,Close()。 
    access并发很差
    using 
      

  2.   


    是连接没有关闭的原因?方法一:重新实例化了一个连接(证明是不行的)              AccessDB access_img = new AccessDB();
                string sql_img = "update yexxb set [zp]=(@img)  WHERE [ID] = " + ID + "";
                int up_img = access_img.Execute_Img(sql_img,imageBytes);
                access_img.Dispose();
    方法二:其实每次使用完都把连接释放了的(证明不行)。    AccessDB类中的方法:
                  public void Dispose()
                {
                    if (ds != null)
                    {
                        ds.Clear();
                    }
                    if (dt != null)
                    {
                        dt.Clear();
                    }
                    if (Conn != null)
                    {
                        Conn.Close();
                    }
                }问题参考:添加信息(insert)的窗口中的“int up = access.Execute_Img(sql_img,imageBytes);
    ”是可行的,而到了“update”就不行了。

    插入信息时的窗口代码:
                 private void TJ_Click(object sender, EventArgs e)
            {
                //读取信息
                string xm = XM.Text;
                string xb = XB.Text;
                string cstz = CSTZ.Text;
                string cssg = CSSG.Text;
                string hykh = HYKH.Text;
                string csrq = CSRQ.Value.ToString("yyyy-MM-dd");
                string fmxm = FMXM.Text;
                string gzdw = GZDW.Text;
                string lxfs = LXFS.Text;
                string jtzz = JTZZ.Text;
                string bzxx = BZXX.Text;
                string jdrq = JDRQ.SelectionEnd.ToString("yyyy-MM-dd");            //获取图像数据
                AccessDB access = new AccessDB();
                byte[] imageBytes = access.PicRead(Pic);            //插入数据
                string sql = "insert into yexxb (xm,xb,cstz,cssg,hykh,csrq,fmxm,gzdw,lxfs,jtzz,bz,jdrq) values ('"+xm+"','"+xb+"','"+cstz+"','"+cssg+"','"+hykh+"',#"+csrq+"#,'"+fmxm+"','"+gzdw+"','"+lxfs+"','"+jtzz+"','"+bzxx+"',#"+jdrq+"#)";
                int add = access.Execute(sql);
                string sql_img = "update yexxb set [zp]=(@img) where [hykh]='"+hykh+"'";
                int up = access.Execute_Img(sql_img,imageBytes);
                if (add >0&&up>0)
                {
                    MessageBox.Show("信息提交成功!", "提示信息");
                    XM.Text = "";
                    HYKH.Text = "";
                    FMXM.Text = "";
                    GZDW.Text = "";
                    LXFS.Text = "";
                    JTZZ.Text = "";
                    BZXX.Text = "";            }
                else
                {
                    MessageBox.Show("信息提交失败!","提示信息");
                }            access.Dispose();
            }