列表视图\数据库\ ComboBox,c#

时间:2019-05-28 10:48:40

标签: c# sql listview

在我的表格上有6个组合框。我将它们的值存储在表“ TableauCombo”中以再次使用。我为浏览表设置了一个“ for”,对于每一步,程序必须在变量“ query”中写入表中的所有值。 (创建SQL查询)。接下来,我启动SQL Request,并且必须在列表视图中写入值。我有一些错误,但无法解决。你能帮助我吗?

我将代码和错误放在下面

 string[] TableauCombo = new string[7];
                {
                    TableauCombo[0] = "ID_Rad=@" + CatégorieRadiologique_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[1] = "Code_Etat=@" + CodeEtatFS_ComboBox_Home.SelectedIndex.ToString(); ;
                    TableauCombo[2] = "Code_Producteur=@" + Producteur_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[3] = "Code_Centre=@" + Centre_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[4] = "Code_StationdeDestination=@" + StationDestination_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[5] = "Code_Conditionnement=@" + Conditionnement_ComboBox_Home.SelectedIndex.ToString();
                };

                string requery = "";
                for (int i = 0; i < TableauCombo.Length; i++)
                {
                    requery = requery + TableauCombo[i];
                }
                LW_FS_Home.Items.Clear();
                MySqlCommand cmd = new MySqlCommand("SELECT FS FROM cdh.fiche WHERE " + requery + " ", connection);            // Requète SQL SELECT 
                MessageBox.Show("Requery" + requery + "");
                cmd.Parameters.AddWithValue("@ID_Rad", CatégorieRadiologique_ComboBox_Home.SelectedIndex.ToString());          //Récupération du ID_Rad souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Etat", CodeEtatFS_ComboBox_Home.ToString());                                //Récupération du Code_Etat souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Producteur", Producteur_ComboBox_Home.ToString());                          //Récupération du Code_Producteur souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Centre", Centre_ComboBox_Home.ToString());                                  //Récupération du Code_Centre souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_StationdeDestination", StationDestination_ComboBox_Home.ToString());        //Récupération du Code_StationdeDestination souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Conditionnement", Conditionnement_ComboBox_Home.Text);                      //Récupération du Code_Conditionnement souhaité par l'utilisateur

                if (Connecté)
                {
                    using (MySqlDataReader Lire = cmd.ExecuteReader())
                    {
                        while (Lire.Read())  // Boucle While qui regarde toutes les infos que l'on souhaite voir avec la méthode "lire"
                        {
                            string FS = Lire["@FS"].ToString();                                                               // Declaration des colonnes et leurs équivalents (remplacants)
                            string ID_Rad = Lire["@ID_Rad"].ToString();
                            string Code_Etat = Lire["@Code_Etat"].ToString();
                            string Code_Producteur = Lire["@Code_Producteur"].ToString();
                            string Code_Centre = Lire["@Code_Centre"].ToString();
                            string Code_StationdeDestination = Lire["@Code_StationdeDestination"].ToString();
                            string Code_Conditionnement = Lire["@Code_Conditionnement"].ToString();

                            LW_FS_Home.Items.Add(new ListViewItem(new[] { FS, ID_Rad, Code_Etat, Code_Producteur, Code_Centre, Code_StationdeDestination, Code_Conditionnement }));// Ajout des nouvelles valeurs dans la list view
                        }
                    }
                    connection.Close();
                }
                else
                {
                    MessageBox.Show("Erreur de connexion");
                }
}

错误:

  

“ MySqlException:必须定义参数'@ 1'。”

但是程序可以运行。 (评论:最后测试)返回的值是:“ RequeryID_Rad = @ 1 + ..........”。 (图片)ERROR

为了明确起见,所有组合框都这样声明:

try //Début Try/Catch pour le ComboBox des catégorie Radiologiqque
{
    connection.Open();
    CatégorieRadiologique_ComboBox_Home.DropDownStyle = ComboBoxStyle.DropDownList; //ReadOnly sur la comboBox
    string selectQuery = "SELECT ID_Rad , Radiologique FROM cdh.ctg_rad";
    MySqlCommand command = new MySqlCommand(selectQuery, connection);
    MySqlDataReader reader = command.ExecuteReader();

    while (reader.Read()) {
        CatégorieRadiologique_ComboBox_Home.Items.Add(reader.GetString("Radiologique"));
        string[, ] TableauRad = new string[1, 2] {
            {
                "ID_Rad", "Radiologique"
            },

        };
    }
    connection.Close();
} catch (MySqlException cn)

{
    MessageBox.Show(cn.Message);
    connection.Close();
}

我认为我的“ for”是错误的,或者是带有listview idk的链接。

4 个答案:

答案 0 :(得分:0)

您错误地传递了参数,您应该仅在查询中传递参数名称,并使用command.Parameters.Add设置参数,如下所示:

string[] TableauCombo = new string[6];
TableauCombo[0] = "ID_Rad=@ID_Rad";
TableauCombo[1] = "Code_Etat=@Code_Etat";
TableauCombo[2] = "Code_Producteur=@Code_Producteur";
TableauCombo[3] = "Code_Centre=@Code_Centre";
TableauCombo[4] = "Code_StationdeDestination=@Code_StationdeDestination";
TableauCombo[5] = "Code_Conditionnement=@Code_Conditionnement";

string requery = string.Join(" AND ", TableauCombo);
LW_FS_Home.Items.Clear();
MySqlCommand cmd = new MySqlCommand("SELECT FS FROM cdh.fiche WHERE " + requery + " ", connection);

cmd.Parameters.AddWithValue("@ID_Rad", CatégorieRadiologique_ComboBox_Home.SelectedIndex.ToString());          //Récupération du ID_Rad souhaité par l'utilisateur
cmd.Parameters.AddWithValue("@Code_Etat", CodeEtatFS_ComboBox_Home.SelectedIndex.ToString());                                //Récupération du Code_Etat souhaité par l'utilisateur
cmd.Parameters.AddWithValue("@Code_Producteur", Producteur_ComboBox_Home.SelectedIndex.ToString());                          //Récupération du Code_Producteur souhaité par l'utilisateur
cmd.Parameters.AddWithValue("@Code_Centre", Centre_ComboBox_Home.SelectedIndex.ToString());                                  //Récupération du Code_Centre souhaité par l'utilisateur
cmd.Parameters.AddWithValue("@Code_StationdeDestination", StationDestination_ComboBox_Home.SelectedIndex.ToString());        //Récupération du Code_StationdeDestination souhaité par l'utilisateur
cmd.Parameters.AddWithValue("@Code_Conditionnement", Conditionnement_ComboBox_Home.SelectedIndex.ToString());                      //Récupération du Code_Conditionnement souhaité par l'utilisateur

但是我不确定与 cdh.fiche 表中的列值相同的组合框选择的索引

答案 1 :(得分:0)

这是新代码,但是,我没有使用您的部分,他说我有一个有关@ 1的声明问题...


string[] TableauCombo = new string[6];
                {
                    TableauCombo[0] = "ID_Rad=@" + CatégorieRadiologique_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[1] = "Code_Etat=@" + CodeEtatFS_ComboBox_Home.SelectedIndex.ToString(); ;
                    TableauCombo[2] = "Code_Producteur=@" + Producteur_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[3] = "Code_Centre=@" + Centre_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[4] = "Code_StationdeDestination=@" + StationDestination_ComboBox_Home.SelectedIndex.ToString();
                    TableauCombo[5] = "Code_Conditionnement=@" + Conditionnement_ComboBox_Home.SelectedIndex.ToString();
                };



                string sqlReq = " SELECT FS FROM cdh.fiche WHERE ";
                string requery = string.Join(" AND ", TableauCombo);
                for (int i = 0; i < TableauCombo.Length; i++)
                {   
                    requery = requery + TableauCombo[i];
                }

                sqlReq = sqlReq + requery;
                LW_FS_Home.Items.Clear();
                MySqlCommand cmd = new MySqlCommand(sqlReq , connection);                                               // Requète SQL SELECT 
                MessageBox.Show( sqlReq );


                cmd.Parameters.AddWithValue("@ID_Rad", CatégorieRadiologique_ComboBox_Home.SelectedIndex.ToString());          //Récupération du ID_Rad souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Etat", CodeEtatFS_ComboBox_Home.ToString());                                //Récupération du Code_Etat souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Producteur", Producteur_ComboBox_Home.ToString());                          //Récupération du Code_Producteur souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Centre", Centre_ComboBox_Home.ToString());                                  //Récupération du Code_Centre souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_StationdeDestination", StationDestination_ComboBox_Home.ToString());        //Récupération du Code_StationdeDestination souhaité par l'utilisateur
                cmd.Parameters.AddWithValue("@Code_Conditionnement", Conditionnement_ComboBox_Home.Text);                      //Récupération du Code_Conditionnement souhaité par l'utilisateur

                if (Connecté)
                {
                    using (MySqlDataReader Lire = cmd.ExecuteReader())
                    {
                        while (Lire.Read())  // Boucle While qui regarde toutes les infos que l'on souhaite voir avec la méthode "lire"
                        {
                            string FS = Lire["@FS"].ToString();                                                               // Declaration des colonnes et leurs équivalents (remplacants)
                            string ID_Rad = Lire["@ID_Rad"].ToString();
                            string Code_Etat = Lire["@Code_Etat"].ToString();
                            string Code_Producteur = Lire["@Code_Producteur"].ToString();
                            string Code_Centre = Lire["@Code_Centre"].ToString();
                            string Code_StationdeDestination = Lire["@Code_StationdeDestination"].ToString();
                            string Code_Conditionnement = Lire["@Code_Conditionnement"].ToString();

                            LW_FS_Home.Items.Add(new ListViewItem(new[] { FS, ID_Rad, Code_Etat, Code_Producteur, Code_Centre, Code_StationdeDestination, Code_Conditionnement }));// Ajout des nouvelles valeurs dans la list view
                        }
                    }
                    connection.Close();
                }
                else
                {
                    MessageBox.Show("Erreur de connexion");
                }


            }

答案 2 :(得分:0)

请将代码替换为

string[] TableauCombo = new string[6];
            {
                TableauCombo[0] = "ID_Rad=@ID_Rad";
                TableauCombo[1] = "Code_Etat=@Code_Etat";
                TableauCombo[2] = "Code_Producteur=@Code_Producteur";
                TableauCombo[3] = "Code_Centre=@Code_Centre";
                TableauCombo[4] = "Code_StationdeDestination=@Code_StationdeDestination";
                TableauCombo[5] = "Code_Conditionnement=@Code_Conditionnement";
            };

答案 3 :(得分:0)

    string[] TableauCombo = new string[6];
                    {
                        TableauCombo[0] = "ID_Rad=@ID_Rad";
                        TableauCombo[1] = "Code_Etat=@Code_Etat";
                        TableauCombo[2] = "Code_Producteur=@Code_Producteur";
                        TableauCombo[3] = "Code_Centre=@Code_Centre";
                        TableauCombo[4] = "Code_StationdeDestination=@Code_StationdeDestination";
                        TableauCombo[5] = "Code_Conditionnement=@Code_Conditionnement";
                    };

                    string sqlReq = " SELECT FS FROM cdh.fiche WHERE ";
                    string requery = string.Join(" AND ", TableauCombo);

                    sqlReq = sqlReq + requery;
                    LW_FS_Home.Items.Clear();
                    MySqlCommand cmd = new MySqlCommand(sqlReq, connection);                                               // Requète SQL SELECT 
                    MessageBox.Show(sqlReq);


                    cmd.Parameters.AddWithValue("@ID_Rad", CatégorieRadiologique_ComboBox_Home.SelectedIndex.ToString());          //Récupération du ID_Rad souhaité par l'utilisateur
                    cmd.Parameters.AddWithValue("@Code_Etat", CodeEtatFS_ComboBox_Home.ToString());                                //Récupération du Code_Etat souhaité par l'utilisateur
                    cmd.Parameters.AddWithValue("@Code_Producteur", Producteur_ComboBox_Home.ToString());                          //Récupération du Code_Producteur souhaité par l'utilisateur
                    cmd.Parameters.AddWithValue("@Code_Centre", Centre_ComboBox_Home.ToString());                                  //Récupération du Code_Centre souhaité par l'utilisateur
                    cmd.Parameters.AddWithValue("@Code_StationdeDestination", StationDestination_ComboBox_Home.ToString());        //Récupération du Code_StationdeDestination souhaité par l'utilisateur
                    cmd.Parameters.AddWithValue("@Code_Conditionnement", Conditionnement_ComboBox_Home.Text);                      //Récupération du Code_Conditionnement souhaité par l'utilisateur

                    if (Connecté)
                    {
                        using (MySqlDataReader Lire = cmd.ExecuteReader())
                        {
                            while (Lire.Read())  // Boucle While qui regarde toutes les infos que l'on souhaite voir avec la méthode "lire"
                            {
                                string FS = Lire["@FS"].ToString();                                                               // Declaration des colonnes et leurs équivalents (remplacants)
                                string ID_Rad = Lire["@ID_Rad"].ToString();
                                string Code_Etat = Lire["@Code_Etat"].ToString();
                                string Code_Producteur = Lire["@Code_Producteur"].ToString();
                                string Code_Centre = Lire["@Code_Centre"].ToString();
                                string Code_StationdeDestination = Lire["@Code_StationdeDestination"].ToString();
                                string Code_Conditionnement = Lire["@Code_Conditionnement"].ToString();

                                LW_FS_Home.Items.Add(new ListViewItem(new[] { FS, ID_Rad, Code_Etat, Code_Producteur, Code_Centre, Code_StationdeDestination, Code_Conditionnement }));// Ajout des nouvelles valeurs dans la list view
                            }
                        }
                        connection.Close();
                    }
                    else
                    {
                        MessageBox.Show("Erreur de connexion");
                    }

以下是该程序的最终答案:Description Request 和错误:Error declaration