在我的Windows窗体应用程序中,我将文本框放在一个组框中,如果文本框为空,则使用以下代码将“N / A”添加到文本框中。
foreach (Control t in groupBox8.Controls)
{
if (t is TextBox)
{
if (t.Text == "")
t.Text = "N/A";
}
}
我正在尝试使用以下代码更新现有记录:
SqlCommand cmd = new SqlCommand("UPDATE semester set paper1_name=@paper1_name, paper1_code=@paper1_code, paper1_marks=@paper1_marks, paper2_name=@paper2_name, paper2_code=@paper2_code, paper2_marks=@paper2_marks, paper3_name=@paper3_name, paper3_code=@paper3_code, paper3_marks=@paper3_marks, paper4_name=@paper4_name, paper4_code=@paper4_code, paper4_marks=@paper4_marks, paper5_name=@paper5_name, paper5_code=@paper5_code, paper5_marks=@paper5_marks, paper6_name=@paper6_name, paper6_code=@paper6_code, paper6_marks=@paper6_marks where course=@course and semester=@semester");
cmd.Connection = con;
cmd.Parameters.AddWithValue("@course", "ABC");
cmd.Parameters.AddWithValue("@semester", 1);
cmd.Parameters.AddWithValue("@paper1_name", textBox190.Text);
cmd.Parameters.AddWithValue("@paper1_code", textBox188.Text);
if (textBox186.Text == "N/A")
cmd.Parameters.AddWithValue("@paper1_marks", 0);
else
cmd.Parameters.AddWithValue("@paper1_marks", textBox186.Text);
cmd.Parameters.AddWithValue("@paper2_name", textBox189.Text);
cmd.Parameters.AddWithValue("@paper2_code", textBox187.Text);
if (textBox185.Text == "N/A")
cmd.Parameters.AddWithValue("@paper2_marks", 0);
else
cmd.Parameters.AddWithValue("@paper2_marks", textBox185.Text);
cmd.Parameters.AddWithValue("@paper3_name", textBox183.Text);
cmd.Parameters.AddWithValue("@paper3_code", textBox181.Text);
if (textBox180.Text == "N/A")
cmd.Parameters.AddWithValue("@paper3_marks", 0);
else
cmd.Parameters.AddWithValue("@paper3_marks", textBox180.Text);
cmd.Parameters.AddWithValue("@paper4_name", textBox177.Text);
cmd.Parameters.AddWithValue("@paper4_code", textBox176.Text);
if (textBox175.Text == "N/A")
cmd.Parameters.AddWithValue("@paper4_marks", 0);
else
cmd.Parameters.AddWithValue("@paper4_marks", textBox175.Text);
cmd.Parameters.AddWithValue("@paper5_name", textBox172.Text);
cmd.Parameters.AddWithValue("@paper5_code", textBox171.Text);
if (textBox170.Text == "N/A")
cmd.Parameters.AddWithValue("@paper5_marks", 0);
else
cmd.Parameters.AddWithValue("@paper5_marks", textBox170.Text);
cmd.Parameters.AddWithValue("@paper6_name", textBox179.Text);
cmd.Parameters.AddWithValue("@paper6_code", textBox174.Text);
if (textBox169.Text == "N/A")
cmd.Parameters.AddWithValue("@paper6_marks", 0);
else
cmd.Parameters.AddWithValue("@paper6_marks", textBox169.Text);
try
{
con.Open();
if (cmd.ExecuteNonQuery() > 0)
{
chk = 1;
}
else
{
label25.Text = "[Error: Cannot save the data]";
label25.Visible = true;
chk = 0;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
cmd.Dispose();
}
但我在这方面遇到了问题。每次其他部分执行显示错误消息。
if (cmd.ExecuteNonQuery() > 0)
{
chk = 1;
}
else
{
label25.Text = "[Error: Cannot save the data]";
label25.Visible = true;
chk = 0;
}
在数据库(学期表)中,也没有记录正在更新。请帮忙。我正在使用sql server。
答案 0 :(得分:0)
而不是使用此代码
cmd.Parameters.AddWithValue("@course", "ABC");
使用
cmd.Parameters.Add("@ParameterName",SqlDbType.VarChar).Value = textboxName.text;
在您的代码中,我可以看到您将值0(这是一个整数)传递给某些参数,但它在您的数据库中接受了VarChar或Char。
附:
在" SqlDBType.VarChar"确保数据类型与数据库中的数据类型相同。
答案 1 :(得分:0)
大家都感谢您的努力。
cmd.Parameters.AddWithValue("@course", "ABC");
出错。
实际上在我的项目中,我在本声明中使用了全局变量课程(例如cmd.Parameters.AddWithValue("@course", course);
)。我试图在这里发布这个问题时简化代码,并用我知道的值替换变量课程的值。但我忘了我在另一个函数中改变了变量课程的价值。这就是为什么,sql查询的条件不满意,也没有给出任何异常/错误。