在我的表格上有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的链接。
答案 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