2

現在、Android アプリを開発しており、php で作成された Web コンパニオンで作成された sqlite ファイルを使用したいと考えています。現在、奇妙な動作が発生していますが、解決方法が見つかりません。状況 :

  • Androidアプリでdbファイルを作成し、php PDOで編集すると、それをAndroidにプッシュバックでき、正しく管理されます
  • Web コンパニオンでファイルを作成すると、Android アプリケーションで正しく処理されません

PHP Web によって作成されたファイルは、はるかに小さい (4K 対 20K)

これは、コマンドラインsqlite3からphpで作成されたファイルから取得したものです

sqlite> select * from sqlite_master;                                                              
table|android_metadata|android_metadata|2|CREATE TABLE android_metadata (locale TEXT)
table|categories_db|categories_db|3|CREATE TABLE categories_db( cat_id INTEGER PRIMARY KEY,cat_name TEXT,field1_name TEXT,field2_name TEXT,field3_name TEXT)
table|items_db|items_db|4|CREATE TABLE items_db( _id INTEGER PRIMARY KEY,id_cat INTEGER,item_name TEXT,item_field1 TEXT,item_field2 TEXT,item_field3 TEXT,item_notes TEXT)
table|settings_db|settings_db|5|CREATE TABLE settings_db( _id INTEGER PRIMARY KEY, timeout INTEGER, language TEXT, install_date TEXT, is_donor TEXT, bogus TEXT)

これは、Androidアプリによって作成されたファイルに表示されるものです

sqlite> select * from sqlite_master;
table|android_metadata|android_metadata|3|CREATE TABLE android_metadata (locale TEXT)
table|items_db|items_db|4|CREATE TABLE items_db( _id INTEGER PRIMARY KEY,id_cat INTEGER,item_name TEXT,item_field1 TEXT,item_field2 TEXT,item_field3 TEXT,item_notes TEXT)
table|categories_db|categories_db|5|CREATE TABLE categories_db( cat_id INTEGER PRIMARY KEY,cat_name TEXT,field1_name TEXT,field2_name TEXT,field3_name TEXT)
table|settings_db|settings_db|6|CREATE TABLE settings_db( _id INTEGER PRIMARY KEY, timeout INTEGER, language TEXT, install_date TEXT, is_donor TEXT, bogus TEXT)

これらは PHP と Android コードの一部です: PHP

    private $TABLE_CATEGORIES_NAME = "categories_db";
private $TABLE_ITEMS_NAME="items_db";
private $TABLE_SETTINGS_NAME="settings_db";
private $TABLE_CREATE_CATEGORIES = "CREATE TABLE categories_db( cat_id INTEGER PRIMARY KEY,cat_name TEXT,field1_name TEXT,field2_name TEXT,field3_name TEXT)";
private $TABLE_CREATE_ITEMS = "CREATE TABLE items_db( _id INTEGER PRIMARY KEY,id_cat INTEGER,item_name TEXT,item_field1 TEXT,item_field2 TEXT,item_field3 TEXT,item_notes TEXT)";
private $TABLE_CREATE_SETTINGS = "CREATE TABLE settings_db( _id INTEGER PRIMARY KEY, timeout INTEGER, language TEXT, install_date TEXT, is_donor TEXT, bogus TEXT)";

function first_entries($PDO_DSN , $SEED){
    try {
        $dbh = new PDO($PDO_DSN, null, null, null);
        $dbh->query("CREATE TABLE android_metadata (locale TEXT)");
        $dbh->query($this->TABLE_CREATE_CATEGORIES);
        $dbh->query($this->TABLE_CREATE_ITEMS);
        $dbh->query($this->TABLE_CREATE_SETTINGS);
        $dbh->query("INSERT INTO android_metadata VALUES('en_US')");
        $dbh = null;
        return true;
    } catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }
}

`データベースの作成に使用される ANDROID CODE :

public class mySQLiteOpenHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME = "passmanager.db";
private static final String TABLE_NAME_ITEMS = "items_db";
private static final String TABLE_NAME_CATEGORIES = "categories_db";
private static final String TABLE_NAME_SETTINGS = "settings_db";
private static final String TABLE_CREATE_ITEMS = "CREATE TABLE "
        + TABLE_NAME_ITEMS + "( " + "_id INTEGER PRIMARY KEY,"
        + "id_cat INTEGER," + "item_name TEXT," + "item_field1 TEXT,"
        + "item_field2 TEXT," + "item_field3 TEXT," + "item_notes TEXT)";
private static final String TABLE_CREATE_CATEGORIES = "CREATE TABLE "
        + TABLE_NAME_CATEGORIES + "( " + "cat_id INTEGER PRIMARY KEY,"
        + "cat_name TEXT," + "field1_name TEXT," + "field2_name TEXT,"
        + "field3_name TEXT)";
private static final String TABLE_CREATE_SETTINGS = "CREATE TABLE "
        + TABLE_NAME_SETTINGS + "( _id INTEGER PRIMARY KEY, "
        + "timeout INTEGER, " + "language TEXT, " + "install_date TEXT, "
        + "is_donor TEXT, " + "bogus TEXT)";
public String cleartext;
public String encodedtext;

mySQLiteOpenHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(TABLE_CREATE_ITEMS);
    db.execSQL(TABLE_CREATE_CATEGORIES);
    db.execSQL(TABLE_CREATE_SETTINGS);
}
4

0 に答える 0