Путают относительно SQLiteOpenHelper и создания нескольких таблиц

Я чувствую, что руководящие принципы разработчика Android относительно сохранения данных в SQLite действительно отсутствуют. Я смущен тем, что общее руководство, когда дело доходит до нескольких таблиц.

в настоящее время у меня есть два менеджера, которые предоставляют (CRUD) два разных набора сущностей пользовательскому интерфейсу.

Do I:

создайте частный класс SQLiteOpenHelper внутри каждого менеджера. Каждый помощник будет иметь свой собственный onCreate для своей собственной таблицы?

или

создать один открытый класс SQLiteOpenHelper, который создает обе таблицы?

Я не вижу никаких явных преимуществ в использовании одного над другим, но я вижу, что оба они используются. Что Android говорит об этом?

1 ответов


пожалуйста, используйте следующие коды для создания нескольких таблиц (я создал две таблицы сейчас) . я сделал код для создания и вставки. также..

import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class MyDB {
     public static final String KEY_ROWID = "_id";
        public static final String KEY_FIRSTNAME = "ID";
        public static final String KEY_LASTNAME = "CS";
        public static final String KEY_DESIGNATION = "CN";
        public static final String KEY_DN = "DN";  

        private static final String TAG = "MyDB";       
        private static final String DATABASE_NAME = "test.db";    
        private static final int DATABASE_VERSION = 1;

        private static final String DATABASE_CREATE_ValidateUser_DriverInfo =
            "create table tabletest1 (_id integer primary key autoincrement, "
            + "ID text not null, CS text not null,CN text not null,DN text not null);";

        private static final String DATABASE_CREATE_ValidateUser_TripInfo =
                "create table tabletest2 (_id integer primary key autoincrement, "
                + "TI text not null, PU text not null,LN text not null,FN text not null,Origin varchar not null,De text not null);";


        private Context context;
        private DatabaseHelper DBHelper;
        private SQLiteDatabase db;

        public MyDB(Context ctx) 
        {
            this.context = ctx;
            DBHelper = new DatabaseHelper(context);
        }

        private static class DatabaseHelper extends SQLiteOpenHelper 
        {
            DatabaseHelper(Context context) 
            {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }

            @Override
            public void onCreate(SQLiteDatabase db) 
            {
                db.execSQL(DATABASE_CREATE_ValidateUser_DriverInfo);
                db.execSQL(DATABASE_CREATE_ValidateUser_TripInfo);
            }

            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, 
                                  int newVersion) 
            {
                Log.w(TAG, "Upgrading database from version " + oldVersion 
                      + " to "
                      + newVersion + ", which will destroy all old data");
                db.execSQL("DROP TABLE IF EXISTS Employee");
                onCreate(db);
            }
        }


        public MyDB open() throws SQLException 
        {
            db = DBHelper.getWritableDatabase();
            return this;
        }

        //---closes the database---    
        public void close() 
        {
            DBHelper.close();
        }


        public long insertTitle(ContentValues initialValues,String TableName) 
        {


            return db.insert(TableName, null, initialValues);
        }




}

используйте следующий код для вставки данных из требуемого действия.

MyDB mmdb=new MyDB(getBaseContext());
                 mmdb.open();

initialValues = new ContentValues();
                            initialValues.put("ID", ID);
                            initialValues.put("CS", CS);
                            initialValues.put("CN", CN);
                            initialValues.put("DN", DN);



                        mmdb.insertTitle(initialValues,"tabletest1");  

mmdb.close();