2

このステートメントでアサーション エラーが発生しました。

SELECT keyphrase_id, keyphrase, url, googlename FROM keyphrases left join domains on keyphrases.domain_id = domains.domain_id where domain_id = ? and ifnull(keytime,'') != ? order by keyphrase desc;

SQLクエリチェッカーを実行したところ、正しい構文ではないことを理由に「!=」ビットが強調表示されました。以前にこのステートメントを使用していたので、これは意味がありません。

SELECT keyphrase_id, keyphrase, url, googlename FROM keyphrases left join domains on keyphrases.domain_id = domains.domain_id  where ifnull(keytime,'') != ? order by keyphrase desc;

whereこれが値をバインドする方法です。

sqlite3_bind_int(selStmt, 1, domain_ID);

sqlite3_bind_text(selStmt, 2, [dateString UTF8String] , -1, SQLITE_TRANSIENT);

私はこれをまったく解決できませんnil。変更しているメソッドの唯一のコンポーネントはSQLステートメントであるため、データベースが開いていることや実行中のステートメントなどとはまったく関係ありません。

誰かがこれについて考えられる理由を提案できますか?

4

1 に答える 1

1

sqlite3エラーを示唆する関数呼び出しからリターン コードを受け取った場合は、別の呼び出しをsqlite3_errmsg行い、エラー メッセージを確認します。

NSLog(@"%s err: %s", __FUNCTION__, sqlite3_errmsg(database));

これにより、何が問題なのかがわかります。

domain_id個人的には、where節内のへの言及があいまいだと思っていたでしょうが、sqlite3_errmsg何が起こっているのかを正確に教えてくれます。

于 2012-10-04T04:38:21.247 に答える