在 oledb 命令中使用变量
using a variable in oledb command
在 c# 中使用 oledb 命令函数进行 sql 查询时,连接变量的正确方法是什么。要应用一些上下文,我试图使列表框显示的内容依赖于在先前列表中所做的另一个选择 box.This 是我尝试过但不起作用的方法。
OleDbCommand projects = new OleDbCommand("SELECT * FROM Client_projects
WHERE clients = " + (listBox1.SelectedItem.ToString()) , conn);
OleDbDataReader project = projects.ExecuteReader();
while (project.Read())
{
// Add items from the query into the listbox
listBox2.Items.Add(project[1].ToString());
}
字符串连接会导致 SQL 注入问题,因此您不应使用它来构建 SQL。您应该参数化您的查询。所以像这样...
using (OleDbCommand projects = new OleDbCommand("SELECT * FROM Client_projects WHERE clients = ?", conn))
{
projects.Parameters.Add("?", OleDbType.VarChar).Value = listBox1.SelectedItem.ToString();
OleDbDataReader project = projects.ExecuteReader();
while (project.Read())
{
listBox2.Items.Add(project[1].ToString());
}
}
OleDbCommand 参数按照它们在 SQL 中指定的顺序设置,因此如果您有多个参数,则必须按顺序执行。
using (OleDbCommand projects = new OleDbCommand("SELECT * FROM Client_projects WHERE clients = ? AND Date = ?", conn))
{
projects.Parameters.Add("?", OleDbType.VarChar).Value = listBox1.SelectedItem.ToString();
projects.Parameters.Add("?", OleDbType.Date).Value = DateTime.Today;
OleDbDataReader project = projects.ExecuteReader();
while (project.Read())
{
listBox2.Items.Add(project[1].ToString());
}
}
您没有使用它,但对于其他可能使用它的人,SqlCommand 使用命名参数...
SELECT * FROM Client_projects WHERE clients = @Clients
projects.Parameters.Add("@Clients", SqlDbType.VarChar).Value = listBox1.SelectedItem.ToString();
在 c# 中使用 oledb 命令函数进行 sql 查询时,连接变量的正确方法是什么。要应用一些上下文,我试图使列表框显示的内容依赖于在先前列表中所做的另一个选择 box.This 是我尝试过但不起作用的方法。
OleDbCommand projects = new OleDbCommand("SELECT * FROM Client_projects
WHERE clients = " + (listBox1.SelectedItem.ToString()) , conn);
OleDbDataReader project = projects.ExecuteReader();
while (project.Read())
{
// Add items from the query into the listbox
listBox2.Items.Add(project[1].ToString());
}
字符串连接会导致 SQL 注入问题,因此您不应使用它来构建 SQL。您应该参数化您的查询。所以像这样...
using (OleDbCommand projects = new OleDbCommand("SELECT * FROM Client_projects WHERE clients = ?", conn))
{
projects.Parameters.Add("?", OleDbType.VarChar).Value = listBox1.SelectedItem.ToString();
OleDbDataReader project = projects.ExecuteReader();
while (project.Read())
{
listBox2.Items.Add(project[1].ToString());
}
}
OleDbCommand 参数按照它们在 SQL 中指定的顺序设置,因此如果您有多个参数,则必须按顺序执行。
using (OleDbCommand projects = new OleDbCommand("SELECT * FROM Client_projects WHERE clients = ? AND Date = ?", conn))
{
projects.Parameters.Add("?", OleDbType.VarChar).Value = listBox1.SelectedItem.ToString();
projects.Parameters.Add("?", OleDbType.Date).Value = DateTime.Today;
OleDbDataReader project = projects.ExecuteReader();
while (project.Read())
{
listBox2.Items.Add(project[1].ToString());
}
}
您没有使用它,但对于其他可能使用它的人,SqlCommand 使用命名参数...
SELECT * FROM Client_projects WHERE clients = @Clients
projects.Parameters.Add("@Clients", SqlDbType.VarChar).Value = listBox1.SelectedItem.ToString();