簡體   English   中英

C#如果在組合框winform中選擇了某些文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM