我想查询我的应用程序的一些数据库信息,但是, SQLiteException 取笑我。
这是来自例外的消息。
SQL逻辑错误或缺少数据库
near" ORDER":语法错误
我在SQLite浏览器上测试了命令文本,它工作正常。但是在Code中,Exception一直被抛出。
这是我使用的一些代码。
// Database Requesting Point
// using(var DB = new SQLiteHandler()) skipped
var QueryText = string.Format(
"SELECT seq, title, written_date FROM pblog_board WHERE category={0} ORDER BY seq DESC LIMIT {1}"
, Target, Requests
); // Complete Command Text
var Reader = DB.ExecuteReader(QueryText, null);
...这是ExecuteReader(string,parameters [])和Query(string,parameters [])
public SQLiteDataReader ExecuteReader(string CommandText, CommandParameter[] Parameters)
{
var Command = Query(CommandText, Parameters);
return Command.ExecuteReader();
}
private SQLiteCommand Query(string CommandText, CommandParameter[] Parameters)
{
SQLiteCommand Command = new SQLiteCommand(_currentConnection);
Command.CommandType = System.Data.CommandType.Text;
Command.CommandText = CommandText;
if (Parameters != null)
for (int i = 0; i < Parameters.Length; i++)
{
Command.Parameters.Add(new SQLiteParameter(
parameterName: Parameters[i].ParameterName,
value: Parameters[i].ParameterValue
));
}
return Command;
}
我希望这不是一个SQLite库的故障。我编码错了,对吗?
答案 0 :(得分:1)
您的问题可能是参数Target
和Requests
的值。你有什么成功的直接数据库调用?
您应该参数化查询,而不是使用string.Format(..)
来注入值。您可以使用string.Format(..)
打开自己的SQL注入。