【发布时间】:2011-09-17 09:45:10
【问题描述】:
我想让我的代码简洁明了,所以我想创建数据库,但我想通过主要活动从另一个类调用它...我尝试这样做,但它不起作用...所以,它应该如何工作??
注意:我是 android 开发的新手。所以,对不起这种类型的问题......
这是主要活动:
package com.DataStorage.Excercise;
import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
public class DataStorageActivity extends Activity {
private Context context;
public SQLiteDatabase db_1=null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AccessingDB acc= new AccessingDB(context);
acc.onCreate(db_1);
}
}
具有数据库代码的其他类..:
package com.DataStorage.Excercise;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class AccessingDB extends SQLiteOpenHelper {
public AccessingDB(Context context) {
super(context, "Test_1", null, 1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(CreateTable());
db.execSQL(Insert_1());
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
/*
public String CreateDB_1(){
String s1= "create database Test_1;";
return s1;
}
*/
private String CreateTable(){
String s2="create table Customer(id_1 INTEGER,fn TEXT,ln TEXt);";
return s2;
}
private String Insert_1(){
String s3="insert into Customer values(1,'aaa','bbb');";
return s3;
}
}
非常感谢...
【问题讨论】:
-
查看此链接How to initialize sqlitedatabase once from a helper class in Android。它关于从主活动初始化数据库类。谢谢。
-
这是一个坏主意,因为要打开的数据库需要上下文,请参阅此链接stackoverflow.com/questions/7444327/…
-
好的,那我怎样才能让活动类也扩展sqlite??它只能有一个扩展...