Путают относительно 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();