0

デスクトップ用 (Java 標準版) と Android 用の 2 つのバージョンが必要なアプリケーションを作成しています。

現在、私はデータベースモデルに取り組んでいます。両方のバージョンでコードを機能させるために、最初のアイデアは、2 つのプラットフォーム間で互換性のない関数をすべてスキップし (残念ながら、Android とデスクトップ Java では、いくつかのメソッドが類似していても、SQLite データベースを管理するためのクラスが完全に異なります)、純粋な生の SQL ステートメント。

しかし、深く掘り下げると、このアプローチには多くの問題があります。

1) 純粋な生の SQL ステートメントを使用して BLOB を格納する方法 (次のようなもの)

insert into table (col1, col2) values (val1, [...... 100KB val 2])

これを行う方法はたくさんあります。Android の ContentValues クラスを使用しますが、標準の Android/デスクトップ Java クラスをカバーする独自のクラス セットを作成して、このデータベース レイヤーを 2 つの別々のバージョンにする必要があります。

2)SQLステートメントにとって特別な意味を持つすべての文字を自動的に置き換える方法。"父の車" - ' を sql ステートメントに直接入れることはできません (純粋な生の sql ステートメントだけを忘れないでください)。

結論:

A) 上記の私の質問に対する答えを知っていますか? B)そのように作業する価値はありますか(純粋な生のSQLステートメントのみ)?C) どのようなアプローチを認めるか - 操作のために独自のクラス セットを作成するか、単にこのデータベース レイヤーの 2 つの異なるバージョンを作成しますか?

ところで、Android には GUI 用に完全に異なるクラスがあることは理解できますが、なぜデータベースのようなものに対して完全に異なるアプローチを作成したのか....

4

1 に答える 1

0
  1. SQLite では、 blob リテラルを使用できます。
    INSERT INTO Tab(blob) VALUES(x'001122abcdef');
  1. すべてのSQL API でパラメーターを使用できます。Android SQLite API では、これさえrawQueryあります:

    db.rawQuery("INSERT INTO Sold(ID, Name) VALUES(1234, ?)",
                new String[] { "father's car" });
    
于 2013-09-13T18:24:39.357 に答える