c# - 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();
}
解决方案
您必须声明所有变量。在这里你错过了变量“@ContactID”
cmd.Parameters.AddWithValue("@ContactID", c.ContactID)
推荐阅读
- php - 访问令牌使用谷歌驱动器从获取视频文件访问
- r - 使用多个图层的自定义图例顺序 Gggplot
- python - PyQT5视频的上下滑动效果
- nuxt.js - nuxt 自定义钩子上的访问模块
- reactjs - 反应无法将参数放入函数(redux)
- javascript - Let 在函数中定义,但全局变化 Javascript
- mdx - 当我在 SSAS 多维数据集中运行以下 MDX 时,我得到一个数字。有人可以告诉我发生了什么以及为什么当我运行它时?
- laravel - 帆作曲家优化自动装载机破帆
- python - 检查两个不同数据帧中的字符串并复制相应的行以计算 Pandas 中的统计信息
- javascript - 如何从 AppScript 在新窗口中打开 Google 表格?