SQLite抛出异常尽管如此,CommandText没有错误

时间:2017-02-21 03:35:16

标签: c# sqlite

我想查询我的应用程序的一些数据库信息,但是, 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库的故障。我编码错了,对吗?

1 个答案:

答案 0 :(得分:1)

您的问题可能是参数TargetRequests的值。你有什么成功的直接数据库调用?

您应该参数化查询,而不是使用string.Format(..)来注入值。您可以使用string.Format(..)打开自己的SQL注入。