2017-02-21 45 views
0

我想查询我的应用程序的一些数据库信息,但是,SQLiteException逗弄我。SQLite抛出异常然而CommandText没有错误

以下是异常消息。

SQL逻辑错误或丢失的数据库

附近的 “序”:语法错误

我测试的命令文本在SQLite的浏览器,它工作得很好。但在代码中,异常继续抛出。

这是我使用的一些代码。

// 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(字符串参数[])和查询(字符串参数[])

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

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

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

+0

好吧,我参数化了我的查询。我没有看到有注入漏洞:)......问题解决了。 'Target'和'Requests'因为'null'而成为问题!谢谢。 –