这让我开玩笑!我想我已经尝试了所有的东西,但是无法弄清楚最新情况。更糟糕的是,我无法访问SQL服务器上的SQL事件探查器。
发送给该方法的测试值是'Barrhead Townswomen'的公会收藏'
如您所见,我正在使用替换将单个撇号更改为双精度。我在想这会弄乱SQL!
当我将值传递给命令参数时,我的查询没有返回任何结果。但是,如果我只是将变量直接包含在查询中,它就可以工作。
这是查询(为简洁起见,它已被删除):
public DataTable select_advancedSearch(string collection)
{
string cnn = ConfigurationManager.ConnectionStrings[connname].ConnectionString;
using (SqlConnection connection = new SqlConnection(cnn))
{
string SQL = string.Empty;
SQL = "SELECT tbl1.ResourceID, tbl1.ItemTitle, tbl1.Type, tbl1.Description, tbl1.CollectionTitle ";
SQL += "FROM [ercHeritage].[dbo].[ERC_HERITAGE_CORE] tbl1 ";
SQL += "WHERE tbl1.CollectionTitle LIKE '%'+ @Input1 +'%' ";
using (SqlCommand command = new SqlCommand(SQL, connection))
{
command.Parameters.Add("@Input1", SqlDbType.NVarChar,255);
command.Parameters["@Input1"].Value = collection.Replace("'", "''").Trim();
DataTable MyTable = new DataTable();
try
{
connection.Open();
SqlDataAdapter MyAdaptor = new SqlDataAdapter();
MyAdaptor.SelectCommand = command;
MyAdaptor.Fill(MyTable);
}
catch (Exception)
{
System.Web.HttpContext.Current.Response.Write("There was a problem with your request.");
}
return MyTable;
}
}
}
任何答案都赞赏!
感谢Alan
答案 0 :(得分:0)
无需在参数值中转义撇号。如果在命令文本中包含字符串文字,则只能这样做。