在向Access数据库添加数据时,出现异常:  System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。   然后在网上各种收解决方法,都说该数据库文件夹的权限,但是改了也没用,依然报这个异常,求大神们指教ASP.NETAccess

解决方案 »

  1.   

    数据库文件右击属性,设置用户的权限,Everyone,写
      

  2.   

    不好意思哈,各位,现在才来,EveryOne已经设置了写入权限,还是抱这个异常
      

  3.   

     public void BatchFileSum()
            {
                string ZTandYEurl = GetZTandYe();
                AccCon = "Provider=Microsoft.Jet.OleDb.4.0;data source=" + txtLabUrl + "/" + ZTandYEurl + "/ufdata.mdb;";
                //显示进度条
                for (int i = 0; i <= DataGridSheet.Rows.Count - 1; i++)
                {
                    OleDbParameter parameter6 = new OleDbParameter();
                    OleDbParameter parameter29 = new OleDbParameter();
                    OleDbParameter parameter45 = new OleDbParameter();
                    OleDbParameter parameter49 = new OleDbParameter();
                    OleDbParameter parameter65 = new OleDbParameter();
                    OleDbParameter parameter67 = new OleDbParameter();
                    string InsertIntoSql = "Insert Into " + DataSheet + "(" +
                    "iperiod,csign,isignseq,ino_id,inid,dbill_date,idoc,cbill,ccheck,cbook,ibook,ccashier,iflag,ctext1,ctext2,cdigest)" +
                    " values(@iperiod,@csign,@isignseq,@ino_id,@inid,@dbill_date,@idoc,@cbill,@ccheck,@cbook,@ibook,@ccashier,@iflag,@ctext1,@ctext2,@cdigest)";
                    OleDbConnection cn = new OleDbConnection(AccCon);
                    OleDbCommand cmd = new OleDbCommand(InsertIntoSql, cn);
                    cmd.Connection.Open();
       
                    cmd.Parameters.AddWithValue("@iperiod", CheckJiZhang());
                    cmd.Parameters.AddWithValue("@csign", this.DataGridSheet.Rows[i].Cells[2].Value);
                    cmd.Parameters.AddWithValue("@isignseq", this.DataGridSheet.Rows[i].Cells[3].Value);
                    cmd.Parameters.AddWithValue("@ino_id", MaxPingzhengFoMd());
                    cmd.Parameters.AddWithValue("@inid", this.DataGridSheet.Rows[i].Cells[5].Value);
                    cmd.Parameters.AddWithValue("@dbill_date", MaxDataDay());                cmd.Parameters.AddWithValue("@idoc", this.txtSheet.Text.ToString().Trim());                cmd.Parameters.AddWithValue("@cbill", this.DataGridSheet.Rows[i].Cells[8].Value);
                    cmd.Parameters.AddWithValue("@ccheck", this.DataGridSheet.Rows[i].Cells[9].Value);
                    cmd.Parameters.AddWithValue("@cbook", this.DataGridSheet.Rows[i].Cells[10].Value);
                    cmd.Parameters.AddWithValue("@ibook", this.DataGridSheet.Rows[i].Cells[11].Value);
                    cmd.Parameters.AddWithValue("@ccashier", this.DataGridSheet.Rows[i].Cells[12].Value);
                    cmd.Parameters.AddWithValue("@iflag", this.DataGridSheet.Rows[i].Cells[13].Value);                cmd.Parameters.AddWithValue("@ctext1", this.DataGridSheet.Rows[i].Cells[14].Value);
                    cmd.Parameters.AddWithValue("@ctext2", this.DataGridSheet.Rows[i].Cells[15].Value);
                    cmd.Parameters.AddWithValue("@cdigest", this.DataGridSheet.Rows[i].Cells[16].Value);
                  
                    cmd.ExecuteNonQuery();
                    cn.Close();
                    cn.Dispose();
                    Biaoshi = "ChengGong";
                    if (DataGridSheet.Rows.Count != 1)
                    {
                        progressBarStr.Value = progressBarStr.Value + 1;
                    }
                }
                progressBarStr.Value = DataGridSheet.Rows.Count + 30;
                MessageBox.Show("生成凭证成功!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                progressBarStr.Visible = false;
                Biaoshi = "";
                return;
            }