2011-07-10 10 views
0

私のAndroidアプリではEventです。 Eventは、属性がidで、long(明らかにEventを識別します)を持ちます。私はSQLiteDatabaseEventを更新したい場合はAndroidのSQLiteはWhereArgsとしてString []を受け入れますか?

、私は次のようにします。

sqliteDatabase.delete("events", "id = ?", new String[] { "" + id }); 

それは動作しますが、これを行うのきれい/より好ましい方法はありありますか?つまり、1つの要素に対してのみ新しいString[]を作成し、その長さをStringにラップするのではなく、面倒です。

答えて

3

これは機能しますが、これを行うにはもっときれいな方法がありますか?

""+idの代わりにString.valueOf(id)を使用すると、実行速度が向上し、ごみが少なくなります。

つまり、1つの要素に対してのみ新しいString []を作成し、longをStringにラップするのではなく、面倒です。

あなたのコードの他の部分から厄介なものを隠す独自の方法を書くことは大歓迎です。

1

Javaコーダーではありませんが、これはおそらく動作しますか?

sqliteDatabase.delete("events", "id = ?", { id.toString() }); 
+0

それはうまくいかないというわけではなく、ただ1つの要素を持つ新しいString配列を作成したくないということです。 –

+0

また、私はJavaでは可能ではないと思います。 (配列の場合は{{}のみ) – whirlwin

+1

@Whirlwin可能です: 'String [] test = {" Halo "、" World "};' < - これはコンパイルしてうまく動作するはずです。 –

2

PreparedStatementを使用して変数にバインドすることができます。しかし、これには告発的なSQLクエリを書く必要があります。

+0

+1の代わりの解決策ですが、私はあなたが文を準備し、その後引数をバインドしなければならないと考えると、もっと面倒であると思います。 – whirlwin

+1

同じSQL-Syntaxではなく、他の値を使用して複数のクエリを実行すると、プリペアドステートメントの処理速度が大幅に向上し、SQLインジェクションが節約されます。 –

関連する問題