首页 > 解决方案 > SQL 错误 137 状态 2 类 15,SQL 应用程序不工作

问题描述

我正在为显示的 C# 应用程序编写一个按钮,然后让用户更改详细信息(例如电话号码、地址),然后用 SQL 数据库中的旧值替换它,我不太确定是否有我编写的 SQL 代码有问题,或者与 C# 代码有关。我对编码也很陌生;所以如果我的代码让你感到困惑,我很抱歉。连接字符串---

    <connectionStrings>
    <add name="connstrng" connectionString="Data Source=DESKTOP-MJ61J7L\SQLEXPRESS;Initial Catalog=Econtact;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"/>
  </connectionStrings>

类叫做 ContactClass----

class contactClass
{
    //getter and setter properties
    //acts as data carrier in our application

    public int ContactID { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string ContactNo { get; set; }

    public string Address { get; set; }

    public string Gender { get; set; }

public bool Update(contactClass c)
    {
        bool isSuccess = false;
        SqlConnection conn = new SqlConnection(myconnstrng);
        try
        {
            string sql = "UPDATE tbl_contact SET FirstName=@FirstName, LastName=@LastName, ContactNo=@ContactNo, Address=@Address, Gender=@Gender WHERE ContactID=@ContactID";
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Parameters.AddWithValue("@FirstName", c.FirstName);
            cmd.Parameters.AddWithValue("@LastName", c.LastName);
            cmd.Parameters.AddWithValue("@ContactNo", c.ContactNo);
            cmd.Parameters.AddWithValue("@Address", c.Address);
            cmd.Parameters.AddWithValue("@Gender", c.Gender); 
            cmd.Parameters.AddWithValue("@ContactID", c.ContactID);
            //open database connection
            conn.Open();

            int row = cmd.ExecuteNonQuery();

            if (row != 0)
            {
                isSuccess = true;
            }
            else
            {
                isSuccess = false;
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
        finally
        {
            conn.Close();
        }
        Console.WriteLine(isSuccess);
        return isSuccess;
    }

更新按钮(点击)

private void btnUpdate_Click(object sender, EventArgs e)
    {
        c.FirstName = txtboxFirstName.Text;
        c.LastName = txtboxLastName.Text;
        c.ContactNo = txtboxPhonenumber.Text;
        c.Address = txtboxAddress.Text;
        c.Gender = cmbGender.Text;
        //update data in the database
        bool success = c.Update(c);
        if(success==true)
        {
            MessageBox.Show("Contact has been successfully updated.");
        }
        else
        {
            MessageBox.Show("Unsuccesfull");
        }
     }  

另外(以防万一)从sql数据库中提取数据

private void dgvContactList_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        //get data grid view and load it into textboxes
        //identify which row mouse is clicked
        int rowIndex = e.RowIndex;
        txtBoxContactID.Text = dgvContactList.Rows[rowIndex].Cells[0].Value.ToString();
        txtboxFirstName.Text = dgvContactList.Rows[rowIndex].Cells[1].Value.ToString();
        txtboxLastName.Text = dgvContactList.Rows[rowIndex].Cells[2].Value.ToString();
        txtboxPhonenumber.Text = dgvContactList.Rows[rowIndex].Cells[3].Value.ToString();
        txtboxAddress.Text = dgvContactList.Rows[rowIndex].Cells[4].Value.ToString();
        cmbGender.Text = dgvContactList.Rows[rowIndex].Cells[5].Value.ToString();
    }

标签: c#sql

解决方案


您必须声明所有变量。在这里你错过了变量“@ContactID”

cmd.Parameters.AddWithValue("@ContactID", c.ContactID)

推荐阅读