为什么以下查询不会返回任何结果?它没有错误。
SQLiteCommand sqliteCommand = new SQLiteCommand("SELECT * FROM " + table + " WHERE @COL LIKE @searchKey", DataBaseConnnection);
sqliteCommand.Parameters.Add("@searchKey", DbType.String).Value = SearchKeyWord;
sqliteCommand.Parameters.Add("@COL", DbType.String).Value = COLString;
答案 0 :(得分:1)
如果您尝试将列名称作为参数传递,则无法执行此操作。该查询将@COL
参数的 literal 值与@searchKey
模式进行比较。这是完全合法的语法,但不适用于你想要的生活。
我怀疑你想要的是:
SQLiteCommand sqliteCommand = new SQLiteCommand("SELECT * FROM " + table
+ " WHERE " + COLString
+ " LIKE @searchKey", DataBaseConnnection);
sqliteCommand.Parameters.Add("@searchKey", DbType.String).Value = SearchKeyWord;
但是,如果您对可以传入的字符串进行COMPLETE控制,那么您应该只执行此操作 - 否则您将对SQL注入攻击持开放态度。