2016-08-05 26 views
2

SQL文字列からコロンを削除できないため、これをどうすればよいか分かりません。 基本的に私は以下のコードを使用してSQLの文字列をSqliteで実行しようとしています。Sqliteの認識できないトークン: ":" C++

string database_name = "C:/Programs_C++/Project/Databases/dbase.db"; 

    string exec_string = "SELECT * FROM " + database_name + " WHERE type='table'"; 

    dbase_return=sqlite3_open_v2(database_name.c_str(),&db_handle,SQLITE_OPEN_READWRITE,NULL); 


dbase_return_tbl=sqlite3_get_table(db_handle,exec_string.c_str(),&result,&row,&column,&error_msg); 

    //But I get the error: unrecognized token: ":" ? 

どうすればこの問題を回避できますか?ありがとう

+1

'exec_string'はあなたが何のためにも使っていないのでここでは無関係です。 – immibis

+0

修正済み..私はラインを残しました..お気軽に – domonica

+0

私はdbase.dbという名前のデータベースを持っています..あなたは精巧にできますか?私はここで何を書きますか?今私はそれが間違っているかもしれないことがわかります。この方法でD'baseからテーブルを選択できないのですか?私はそれをどうすればいいのか知っていますか?ありがとう – domonica

答えて

-1

URI filenamesがオンになっているように見えます。これはコンパイル時またはランタイム時に実行できます(コンパイル時にコンパイルされている可能性があります)。

URIファイル名がオンにされている場合は、あなたのような何かにあなたのファイル名を変更する必要があります。

file:///C:/Programs_C++/Project/Databases/dbase.db 

編集:あなたはそれをオフにしたい場合は、私はあなたがこの1のためにそれを行うことができるとは思いませんcall(呼び出しはパラメータを切り替えるだけのパラメータの一部としてフラグをとるため)。代わりに、グローバルURIファイル名の規則を無効にするにはsqliteのを伝え

sqlite3_config(SQLITE_CONFIG_URI, 0) 

を呼び出すことにより、グローバルに無効にすることができます。注意:これは一度だけ呼び出す必要があり、スレッドセーフではないので、おそらくこれをプログラムの先頭に置いてください。

ただし、完全に無効にする前にURIファイル名が役に立つかどうか調べる価値があります。

+0

ありがとうございます、私はそこにいると思いますが、私のコードでSQLITE_USE_URI = 0を使用する方法がわかりません。私はあなたがどのように知っているとは思わない?私は#define SQLITE_CONFIG_URI = 0を私のコードの上に運がないと試しました – domonica

+0

それをありがとう..私はちょうどこれもまた来ました。それは問題を解決していませんが、私はsqlite3_configを置いた場所と何か関係がありますので、私は試していきます。私はあなたが正しい軌道に乗っていると思います。それは私に新たな配慮をもたらしました。 – domonica

1

することはできテーブルからではなく、データベースからSELECT

まず(ファイル名を使用して)データベースを開くには、その後、

SELECT * FROM myTable; 

SELECT * FROM C:/Programs_C++/Project/Databases/dbase.db WHERE type = 'table'のように、有効なSQL文を実行することは、有効なSQLではありません。すべてのテーブルのリストを取得しようとしている場合、そのようにすることはできません。

関連する問題