データベースからいくつかのデータを選択しようとしていますが、それを行うためのコードのスライスが 2 つあります。
cursor = builder.query(db,
new String[]{"col1", "col2", "col3"},
"id = ?", new String[]{getSID(db)}, null, null, null);
と
cursor = builder.query(db,
new String[]{"col1", "col2", "col3"},
"id = " + getSID(db), null, null, null, null);
それらの違いは、ドキュメントによると最初の方がより正しいように見えることですが、それも機能しません - カーソルが空です。2 番目の代わりに、必要なすべてのデータを取得しています。
そこで、データベースのコピーを使用して PC でさまざまな SQL クエリを実行しようとしましたが、それが得られたものです。
SELECT col1, col2, col3 FROM SomeTables WHERE (id = '42')
これは機能しません (そして、このクエリは明らかに、最初のコード サンプルによって生成されたクエリと同じです)
SELECT col1, col2, col3 FROM SomeTables WHERE (id = 42)
これは正常に動作します (2 番目のコード サンプルのクエリと同じです)。
私が知っているように、SQLite は型キャストを自動的に実行するはずですが、何かがうまくいかず、その理由がわかりません。最初のコード サンプルを修正する方法について何かアイデアはありますか? (または、おそらくデータベース?)
重要な場合は、フィールドを含むテーブルの簡略化されCREATE
たスクリプトを次に示します。id
CREATE TABLE SomeTable ( ID PRIMARY KEY, col1, col2, [...] )
UPD:ところで、getSID(db) は文字列オブジェクトを返します。