2017-02-21 24 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'而成爲問題!謝謝。 –