1

我的字符串包括引号;选择语句崩溃。

vm_TEXT_string = "Hello 'French' People";
vm_DataTable_SELECT_string = "[MyField] = '" + vm_TEXT_string + "'";
DataRow[] o_DataRow_ARRAY_Found = vco_DataTable.Select (vm_DataTable_SELECT_string);

我不能使用这个语句:string filter = "[MyColumn]" + " LIKE '%" + SearchWord + "%'";

我找到了字符串格式:

DataRow[] oDataRow = oDataSet.Tables["HasDiseas"].Select ( string.Format ( "DName='{0}'", DiseasListBox.SelectedItem.ToString () ) );

有什么建议选择带引号的字符串吗?

谢谢你,符文

4

2 回答 2

1

对于数据表,可以将单引号替换为两个引号:

string.Format("DName='{0}'", DiseasListBox.SelectedItem.ToString().Replace("'", "''")

但请记住,您不应该对实际的 sql 查询执行此操作。破解者可能会滥用该技术向您的数据库发送不需要的查询。

另一种选择是执行以下操作:

IEnumerable<DataRow> rows = oDataSet.Tables["HasDiseas"].Where(r => r["DName"] == DiseasListBox.SelectedItem.ToString());
于 2010-03-25T20:48:50.463 回答
0

这取决于您的数据库引擎,但通常,您可以'使用两个单引号 ( ) 转义单引号 ( '')。

虽然,最好的方法是使用参数化查询,它会为您转义特殊字符。

于 2010-03-25T20:53:47.330 回答