C# 需要从 checkedListBox 字符串中删除“'”,这样数据库连接就不会抛出异常
C# Need to eliminate " ' " from checkedListBox string so DB connection do not throw exception
我一直在寻找一种方法让我的 dBConnection to Access 忽略撇号 ('),因为它会抛出异常。这是我的代码:
public partial class Notifications : Form
{
private void checkedListBox_ItemCheck(object sender, ItemCheckEventArgs e)
{
foreach (object itemChecked in checkedListBox.CheckedItems)
{
//This is the line of code I added to try to clean up the " ' "
filterstring += checkedListBox.Text.Replace("'", "");
//This line is to select multiple items from column "Responsible" by adding "OR".
filterstring += " Responsible = '" + itemChecked.ToString() + "' OR";
}
filterstring = filterstring.Substring(0, filterstring.LastIndexOf("OR"));
}
}
不幸的是,代码一直向我抛出异常(名字是 B'oeckelman)
这是指向数据库的代码,以防它有助于澄清:
private void button1_Click(object sender, EventArgs e)
{
DataTableCollection tables = myDatabaseDataSet.Tables;
DataView view = new DataView(tables[0]);
BindingSource source = new BindingSource();
source.DataSource = view;
dataGridView1.DataSource = source;
//Here is where the exception is pointing at.
source.Filter = filterstring;
感谢任何帮助。提前谢谢你。
你看到了吗"itemChecked.ToString()"?你应该在那里做你的替换。
这不是你的情况,但一般来说,不要将你的代码注入字符串以针对 SQL 服务器执行它。定义参数并为它们设置值。然后使用这些参数来形成您的查询。除了这个问题,你的代码可能会出现 SQL 注入安全问题。
我相信您正在寻找这样的东西:
foreach (object itemChecked in checkedListBox.CheckedItems) {
filterstring += " Responsible = '" + itemChecked.ToString().Replace("'", "") + "' OR";
}
出乎意料的'
出现的地方确实在"legal"之间
但是,这种输入清理非常薄弱,可能会出现其他问题。必须参考 xkcd 的 Bobby Tables。我不确定这是什么语言,但肯定有一种抽象允许您使用准备好的语句来使其更健壮(并允许您以应有的方式保留人名)。
我一直在寻找一种方法让我的 dBConnection to Access 忽略撇号 ('),因为它会抛出异常。这是我的代码:
public partial class Notifications : Form
{
private void checkedListBox_ItemCheck(object sender, ItemCheckEventArgs e)
{
foreach (object itemChecked in checkedListBox.CheckedItems)
{
//This is the line of code I added to try to clean up the " ' "
filterstring += checkedListBox.Text.Replace("'", "");
//This line is to select multiple items from column "Responsible" by adding "OR".
filterstring += " Responsible = '" + itemChecked.ToString() + "' OR";
}
filterstring = filterstring.Substring(0, filterstring.LastIndexOf("OR"));
}
}
不幸的是,代码一直向我抛出异常(名字是 B'oeckelman)
这是指向数据库的代码,以防它有助于澄清:
private void button1_Click(object sender, EventArgs e)
{
DataTableCollection tables = myDatabaseDataSet.Tables;
DataView view = new DataView(tables[0]);
BindingSource source = new BindingSource();
source.DataSource = view;
dataGridView1.DataSource = source;
//Here is where the exception is pointing at.
source.Filter = filterstring;
感谢任何帮助。提前谢谢你。
你看到了吗"itemChecked.ToString()"?你应该在那里做你的替换。
这不是你的情况,但一般来说,不要将你的代码注入字符串以针对 SQL 服务器执行它。定义参数并为它们设置值。然后使用这些参数来形成您的查询。除了这个问题,你的代码可能会出现 SQL 注入安全问题。
我相信您正在寻找这样的东西:
foreach (object itemChecked in checkedListBox.CheckedItems) {
filterstring += " Responsible = '" + itemChecked.ToString().Replace("'", "") + "' OR";
}
出乎意料的'
出现的地方确实在"legal"之间
但是,这种输入清理非常薄弱,可能会出现其他问题。必须参考 xkcd 的 Bobby Tables。我不确定这是什么语言,但肯定有一种抽象允许您使用准备好的语句来使其更健壮(并允许您以应有的方式保留人名)。