[英]C# if certain text selected in combobox winform
我有3個組合框:cmbStatus,cmbReason,cmbTransfer,主鍵文本框txtNo_RM和觸發按鈕:btnAdd。 使用Mysql作為數據庫
當cmbStatus!=“已傳輸”時,cmbReason和cmbTransfer不會被用戶選擇。 問題是當我使用此代碼時它不起作用
private void btnAdd_Click(object sender, EventArgs e)
{
MySqlConnection con = new MySqlConnection(MyConnectionString);
MySqlCommand cmd;
con.Open();
try
{
cmd = con.CreateCommand();
cmd.CommandText = "Insert Into tb_data(No_RM,Status,Reason,Transfer)Values(@No_RM,@Status,@Reason,@Transfer)";
cmd.Parameters.AddWithValue("@NO_RM", txtNo_Rm.Text);
cmd.Parameters.AddWithValue("@Status", cmbStatus.Text);
if (cmbStatus.Text == "Transfered")
{
cmd.Parameters.AddWithValue("@Reason", cmbReason.Text);
cmd.Parameters.AddWithValue("@Transfer", cmbTransfer.Text);
}
cmd.ExecuteNonQuery();
}
finally
{
if (con.State == ConnectionState.Open)
{
con.Close();
LoadData();
MessageBox.Show("Data Added!");
}
}
}
以上致命錯誤消息的代碼,也使用SelectedText.ToString
嘗試添加此代碼,導致超出范圍的錯誤
if (cmbStatus.Text != "Transfered")
{
cmd.Parameters.AddWithValue("@Reason", "");
cmd.Parameters.AddWithValue("@Transfer", "");
}
之前感謝
為組合框而不是Text
使用屬性SelectedValue
。 如果cmbStatus.Text!=“ Transfered”,也將DBNull.Value
或默認值分配給參數@Reason
和@Transfer
。
您可以將DBValue.Null
用作空值,如下所示:
if (cmbStatus.Text == "Transfered")
{
cmd.Parameters.AddWithValue("@Reason", cmbReason.Text);
cmd.Parameters.AddWithValue("@Transfer", cmbTransfer.Text);
}
else
{
cmd.Parameters.AddWithValue("@Reason", DBNull.Value);
cmd.Parameters.AddWithValue("@Transfer", DBNull.Value);
}
考慮您正在使用的參數化查詢,它期望在查詢中指定四個參數。因此,您應該在四個參數中指定五個,否則您將得到如問題中所述的錯誤。 在這種情況下,您可以做的是:
cmd = con.CreateCommand();
if (cmbStatus.Text == "Transfered")
{
cmd.CommandText = "Insert Into tb_data(No_RM,Status,Reason,Transfer)Values(@No_RM,@Status,@Reason,@Transfer)";
cmd.Parameters.AddWithValue("@Reason", cmbReason.Text);
cmd.Parameters.AddWithValue("@Transfer", cmbTransfer.Text);
}
else
{
cmd.CommandText = "Insert Into tb_data(No_RM,Status)Values(@No_RM,@Status)";
}
cmd.Parameters.AddWithValue("@NO_RM", txtNo_Rm.Text);
cmd.Parameters.AddWithValue("@Status", cmbStatus.Text);
cmd.ExecuteNonQuery();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.