我已经尝试了将近一个星期来创建一个包含多个表的 SQLite 数据库,但没有成功。我已经搜索了几个小时并查看了有关该主题的所有主题here,但我不知道我做错了什么。
这是我从互联网上获得的用于一张桌子的代码,我刚刚添加了另一张桌子,它不再起作用了。
适配器:
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
public class WorkingAdapter {
public static final String WORKINGDATABASE_NAME = "WORKING_DATABASE";
public static final String WORKINGDATABASE_TABLE = "WORKING_TABLE";
public static final int MYDATABASE_VERSION = 1;
public static final String KEY_ID = "_id";
public static final String KEY_CONTENT = "Content";
//create table MY_DATABASE (ID integer primary key, Content text not null);
private static final String SCRIPT_CREATE_WORKING_DATABASE =
"create table " + WORKINGDATABASE_TABLE + " ("
+ KEY_ID + " integer primary key autoincrement, "
+ KEY_CONTENT + " text not null);";
public static final String WORKINGDATABASE_TABLE2 = "MY_TABLE2";
public static final String KEY_ID2 = "_id2";
public static final String KEY_CONTENT2 = "Content2";
//create table MY_DATABASE (ID integer primary key, Content text not null);
private static final String SCRIPT_CREATE_WORKING_DATABASE2 =
"create table " + WORKINGDATABASE_TABLE2 + " ("
+ KEY_ID2 + " integer primary key autoincrement, "
+ KEY_CONTENT2 + " text not null);";
private SQLiteHelper sqLiteHelper;
private SQLiteDatabase sqLiteDatabase;
private Context context;
public WorkingAdapter(Context c){
context = c;
}
public WorkingAdapter openToRead() throws android.database.SQLException {
sqLiteHelper = new SQLiteHelper(context, WORKINGDATABASE_NAME, null, MYDATABASE_VERSION);
sqLiteDatabase = sqLiteHelper.getReadableDatabase();
return this;
}
public WorkingAdapter openToWrite() throws android.database.SQLException {
sqLiteHelper = new SQLiteHelper(context, WORKINGDATABASE_NAME, null, MYDATABASE_VERSION);
sqLiteDatabase = sqLiteHelper.getWritableDatabase();
return this;
}
public void close(){
sqLiteHelper.close();
}
public long insert(String content){
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_CONTENT, content);
return sqLiteDatabase.insert(WORKINGDATABASE_TABLE, null, contentValues);
}
public long insert2(String content){
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_CONTENT2, content);
return sqLiteDatabase.insert(WORKINGDATABASE_TABLE2, null, contentValues);
}
public int deleteAll(){
return sqLiteDatabase.delete(WORKINGDATABASE_TABLE, null, null);
}
public Cursor queueAll(){
String[] columns = new String[]{KEY_ID, KEY_CONTENT};
Cursor cursor = sqLiteDatabase.query(WORKINGDATABASE_TABLE, columns,
null, null, null, null, null);
return cursor;
}
public Cursor queueAll2(){
String[] columns = new String[]{KEY_ID2, KEY_CONTENT2};
Cursor cursor = sqLiteDatabase.query(WORKINGDATABASE_TABLE2, columns,
null, null, null, null, null);
return cursor;
}
public class SQLiteHelper extends SQLiteOpenHelper {
public SQLiteHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(SCRIPT_CREATE_WORKING_DATABASE);
db.execSQL(SCRIPT_CREATE_WORKING_DATABASE2);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + WORKINGDATABASE_TABLE);
db.execSQL("DROP TABLE IF EXISTS " + WORKINGDATABASE_TABLE2);
onCreate(db);
}
}
}
活动:
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class AndroidSQLite extends Activity {
private WorkingAdapter myWorkingAdapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView listContent = (ListView)findViewById(R.id.contentlist);
/*
* Create/Open a SQLite database
* and fill with dummy content
* and close it
*/
myWorkingAdapter = new WorkingAdapter(this);
myWorkingAdapter.openToWrite();
myWorkingAdapter.deleteAll();
myWorkingAdapter.insert("A for Apply");
myWorkingAdapter.insert("B for Boy");
myWorkingAdapter.insert("C for Cat");
myWorkingAdapter.insert("D for Dog");
myWorkingAdapter.insert("E for Egg");
myWorkingAdapter.insert("F for Fish");
myWorkingAdapter.insert("G for Girl");
myWorkingAdapter.insert("H for Hand");
myWorkingAdapter.insert("I for Ice-scream");
myWorkingAdapter.insert("J for Jet");
myWorkingAdapter.insert("K for Kite");
myWorkingAdapter.insert("L for Lamp");
myWorkingAdapter.insert("M for Man");
myWorkingAdapter.insert("N for Nose");
myWorkingAdapter.insert("O for Orange");
myWorkingAdapter.insert("P for Pen");
myWorkingAdapter.insert("Q for Queen");
myWorkingAdapter.insert("R for Rain");
myWorkingAdapter.insert("S for Sugar");
myWorkingAdapter.insert("T for Tree");
myWorkingAdapter.insert("U for Umbrella");
myWorkingAdapter.insert("V for Van");
myWorkingAdapter.insert("W for Water");
myWorkingAdapter.insert("X for X'mas");
myWorkingAdapter.insert("Y for Yellow");
myWorkingAdapter.insert("Z for Zoo");
myWorkingAdapter.insert2("W FOR WORKING");
myWorkingAdapter.close();
/*
* Open the same SQLite database
* and read all it's content.
*/
myWorkingAdapter = new WorkingAdapter(this);
myWorkingAdapter.openToRead();
Cursor cursor = myWorkingAdapter.queueAll2();
startManagingCursor(cursor);
String[] from = new String[]{WorkingAdapter.KEY_CONTENT};
int[] to = new int[]{R.id.text};
SimpleCursorAdapter cursorAdapter =
new SimpleCursorAdapter(this, R.layout.row, cursor, from, to);
listContent.setAdapter(cursorAdapter);
myWorkingAdapter.close();
}
}
我一直在寻找具有多个表的 SQLite 数据库的示例,但没有一个有效,并且完全按照我在该主题上找到的所有页面中阅读的内容进行操作,您能告诉我我做错了什么吗?
谢谢 :)