繁体   English   中英

使用C#和oledb查询更新Ms-Access 2010中的列值

[英]updating column value in Ms-Access 2010 using c# and oledb query

我正在努力更新MS-ACCESS数据库中的记录/列值...帮助将不胜感激..!

我正在显示使用Datagridview从Ms-access中的表中检索的零件号的列表,该数据库中应该更新/更改零件号。 (“ partno”是我的datagridview的第三列。)

但是我无法更新数据库中的单个记录。.无例外..一切都很好。

但是没有行受到影响!

这是我的代码:

 private void UpdateDetails_Click(object sender, EventArgs e)
 {
      try
      {
          con = new OleDbConnection();
          con.ConnectionString = Helper.MyConnectionString;
          con.Open();

          for (int i = 0; i <= datagridview1.Rows.Count-1; i++)
          {
             int j = i + 1; // j is the serial number corresponding to partnumber

             string partno = dgv1.Rows[i].Cells[2].Value.ToString(); //getting part number from Datagridview

             String partquery = "";

             if (partno == null || partno == "") //checking whether part number updated or not
             {
                 partquery = "update Vendor SET PartNo=NULL where Vendor.Sno=" + j + " ";
             }
             else           
                 partquery = "update Vendor SET PartNo='" + partno + "' where Vendor.Sno=" + j + " ";

             //Vendor is the table name containg 'partno' list

             cmd = new OleDbCommand();
             cmd.Connection = con;
             cmd.CommandType = CommandType.Text;
             cmd.CommandText = partquery;
             cmd.ExecuteNonQuery();
          }
      }
      catch(Exception ex)
          {
        //exception handler
      }

}

正如@Soner建议的那样,您应该使用参数。 这样的事情。

修改了代码 ,您是否做了这样的事情?

    private void UpdateDetails_Click(object sender, EventArgs e)
    {
        try
        {
            con = new OleDbConnection();
            con.ConnectionString = Helper.MyConnectionString;
            con.Open();

            for (int i = 0; i <= datagridview1.Rows.Count - 1; i++)
            {
                int j = i + 1; // j is the serial number corresponding to partnumber

                string partno = dgv1.Rows[i].Cells[2].Value.ToString(); //getting part number from Datagridview

                //String partquery = "";

                //if (partno == null || partno == "") //checking whether part number updated or not
                //{
                //    partquery = "update Vendor SET PartNo=NULL where Vendor.Sno=" + j + " ";
                //}
                //else
                //    partquery = "update Vendor SET PartNo='" + partno + "' where Vendor.Sno=" + j + " ";

                OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("update Vendor SET PartNo='@partno' where Vendor.Sno=@vndid");
                OleDbParameter parameter = new System.Data.OleDb.OleDbParameter("@partno", partno);
                cmd.Parameters.Add(parameter);
                parameter = new System.Data.OleDb.OleDbParameter("@vndid", j);
                cmd.Parameters.Add(parameter);


                cmd.Connection = con;
                cmd.CommandType = CommandType.Text;
                cmd.ExecuteNonQuery();
            }
        }
        catch (Exception ex)
        {
            //exception handler
        }

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM