这是什么异常信息:无法保存;正被别的用户锁定。代码是要把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; }
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; }
access并发很差
using
是连接没有关闭的原因?方法一:重新实例化了一个连接(证明是不行的) 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();
}