0

主キーとして URL を含むデータベースがあります。テーブルスキーマは

 -- Describe HISTORY
CREATE TABLE history  ("name" TEXT NOT NULL,  "location"  TEXT NOT NULL PRIMARY KEY, "time_date" DATE)

およびサンプルデータ

|   name    |   location                            |   time_date   |
|   Google  |   http://www.google.co.tz/?gws_rd=cr  |   2013-08-13  |

私もです:

DELETE FROM history WHERE location="http://www.google.co.tz/?gws_rd=cr"

しかし、削除は機能しません!日付ごとに削除するか、すべてを削除すると正常に動作するため、何らかのエスケープ URL が必要なようです。以下の関数でwxSQLite3を使用します

DeleteHistory(const wxString& location)
{
    wxString sql = wxT("DELETE FROM history WHERE location=?;");
    try
    {
        wxSQLite3Statement stmt = m_db->PrepareStatement(sql);
        stmt.Bind(1, location);

        stmt.ExecuteUpdate();
        stmt.Reset();
        stmt.Finalize();//done
    }
    catch (wxSQLite3Exception& e)
    {
        wxMessageBox(e.GetMessage());
        return false;
    }
    return true;
}

データベース ファイルは次の場所にあります: https://www.dropbox.com/s/szori418cryvvuy/browser.config

私は何が欠けていますか?

4

2 に答える 2

0

location パラメーターには疑問符 (プレースホルダーとして解釈される) が含まれている (または含まれている可能性がある) ため、引用符で囲む必要があると思います。

于 2013-08-13T13:15:05.550 に答える