如何在 SQL 中的数据表的列中进行搜索?
How can I search in a column of a datatable in SQL?
这是代码:
// get id groupe
cmd = new SqlCommand("select idgroupe from enseigner where idformateur = '"+Session["matricule"]+"'", cn);
dr = cmd.ExecuteReader();
dt.Load(dr);
dr.Close();
// get group name
cmd = new SqlCommand("select nom from groupe where ID IN("+dt.Columns[0]+")", cn);
dr = cmd.ExecuteReader();
// fill dropdown list
while (dr.Read())
{
DropDownList1.Items.Add(dr[0].ToString());
}
dr.Close();
cn.Close();
我无法获取所有列,像这样我只获取列的名称,所以会出现问题。
我收到这个错误:
System.Data.SqlClient.SqlException : 'Nom de colonne non valide : 'idgroupe'
注意:idgroupe
是 DataTable 中列的名称
错误是命令
cmd = new SqlCommand("select nom from groupe where ID IN("+dt.Columns[0]+")", cn);
此文本翻译为“select nom from groupe where ID IN(idgroupe)”
这意味着正在搜索 table 组的列 nom,其中 Id 在列 idgroupe 中,这可能不存在。
我们不知道您真正想要什么,但至少应该在括号周围加上简单的引号,类似于您在第一个命令中所做的。
无论如何,您应该阅读有关 Sql 注入 (https://www.troyhunt.com/stored-procedures-and-orms-wont-save/)
并将您的命令更改为
using(cmd = new SqlCommand("select idgroupe from enseigner where idformateur = @id", cn))
{
cmd.Parameters.AddWithValue("@id", Session["matricule"]);
(...)
}
这是代码:
// get id groupe
cmd = new SqlCommand("select idgroupe from enseigner where idformateur = '"+Session["matricule"]+"'", cn);
dr = cmd.ExecuteReader();
dt.Load(dr);
dr.Close();
// get group name
cmd = new SqlCommand("select nom from groupe where ID IN("+dt.Columns[0]+")", cn);
dr = cmd.ExecuteReader();
// fill dropdown list
while (dr.Read())
{
DropDownList1.Items.Add(dr[0].ToString());
}
dr.Close();
cn.Close();
我无法获取所有列,像这样我只获取列的名称,所以会出现问题。
我收到这个错误:
System.Data.SqlClient.SqlException : 'Nom de colonne non valide : 'idgroupe'
注意:idgroupe
是 DataTable 中列的名称
错误是命令
cmd = new SqlCommand("select nom from groupe where ID IN("+dt.Columns[0]+")", cn);
此文本翻译为“select nom from groupe where ID IN(idgroupe)” 这意味着正在搜索 table 组的列 nom,其中 Id 在列 idgroupe 中,这可能不存在。
我们不知道您真正想要什么,但至少应该在括号周围加上简单的引号,类似于您在第一个命令中所做的。
无论如何,您应该阅读有关 Sql 注入 (https://www.troyhunt.com/stored-procedures-and-orms-wont-save/)
并将您的命令更改为
using(cmd = new SqlCommand("select idgroupe from enseigner where idformateur = @id", cn))
{
cmd.Parameters.AddWithValue("@id", Session["matricule"]);
(...)
}