我写了一个SQLiteOpenHelper的子类假如叫做DBOpenHelper,然后创建对象,需要传入的第一个参数是Context类型的。以前我在同一个包下面创建一个Activity比如叫做SQLiteActivity,里面加一些按钮之类的,创建数据库,升级数据库,都没什么问题,因为该Context参数可以直接叫做SQLiteActivity.this,这样就工作正常。但是现在我并不想把创建数据库,升级数据库这些封装成一个Activity,只是当作工具类被调用,这样我就不知道Context参数该传什么值了???请教高人指点
解决方案 »
- 线性布局有没类似绝对布局精确定位的函数借口,比如在100,100处画个imagebutton
- android模拟器为什么不能连接google的网站,而其他却可以呀
- Listview中列表向上滑动问题求助
- 关于android支持多重屏幕的例子
- 转跳的问题
- res文件夹添加了新项,R却没变
- 为什么我的手机只有自带的程序能够读取到nfc标签但是我自己写的应用却读不到呢?我确定应用应该是没错的
- eclipse设置问题
- 有人知道怎么修改sharesdk框架的分享界面的样式吗?
- 安卓做3个页面具有增删该查功能
- 使用getContentResolver().query()获得联系人信息,程序出错
- 关于PopupWindow的问题
不好意思,我还是不太明白。我使用了context.getApplicationContext()作为context参数,还是不执行,不知道这样对不对。
我没有继承Activity,直接创建了一个普通的java类。不知道是不是这样不行?:)
以前是这样的,然后这样确实也工作,但是现在我并不想创建成为Activity,只是想把它作为一个中间过程,被调用就行。不知道能不能这样做,请指教一下:)
贴代码吧package com.jftt.smart.db;
import com.jftt.smart.data.Const;import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;/**
* class name:SQLiteOpenHelper<BR>
* class description:<BR>
* PS: <BR>
*
* @version 1.00 2011/09/21
* @author CODYY)peijiangping
*/
public class DB extends SQLiteOpenHelper {
private final static String DATEBASE_NAME = "smart scence.db";
private final static int DATABASE_VERSION = 1; private final static String TABLE_ROUTINE = "routine";
private final static String TABLE_DETAIL = "routine_detail"; private final static String TABLE_SCENCE = "scene"; public DB(Context context) {
super(context, DATEBASE_NAME, null, DATABASE_VERSION);
} @Override
public void onCreate(SQLiteDatabase db) { // 情景模式表
String sql = "CREATE TABLE "
+ TABLE_SCENCE
+ "(_id INTEGER DEFAULT '1' NOT NULL PRIMARY KEY AUTOINCREMENT,"
+ "icon INTEGER,"
+ "name TEXT,"
+ "run NUMERIC,"
// + "ringtones INTEGER NOT NULL ,"
+ "r_ring NONE,"
// + "volume INTEGER NOT NULL CONSTRAINT fk_volume_id REFERENCES volume(_id) ON DELETE CASCADE,"
+ "v_ring INTEGER," + "v_media INTEGER," + "v_clock INTEGER,"
+ "v_inform INTEGER,"
+ "shake NUMERIC,"
+ "wallpaper NONE," + "topics NONE," + "backlight INTEGER,"
+ "backlightTime INTEGER," + "bluetooth NUMERIC,"
+ "re TEXT)";
db.execSQL(sql);
// 作息模式表
sql = "CREATE TABLE " + TABLE_ROUTINE
+ "(_id INTEGER DEFAULT '1' NOT NULL PRIMARY KEY AUTOINCREMENT,"
+ "name TEXT NOT NULL," + "run NUMERIC NOT NULL,"+ "tempset NUMERIC,"
+ "re TEXT)";
db.execSQL(sql); // 作息明细表
sql = "CREATE TABLE "
+ TABLE_DETAIL
+ "(_id INTEGER DEFAULT '1' NOT NULL PRIMARY KEY AUTOINCREMENT,"
+ "rest_id INTEGER,"
+ "ss_id INTEGER,"
+ "packagename TEXT,"
+ "labelname TEXT,"
+ "wifi NUMERIC,"
+ "flightmode NUMERIC,"
+ "week TEXT,"
+ "starttime NUMERIC,"
+ "endtime NUMERIC,"
+ "re TEXT)";
db.execSQL(sql);
// 标准
sql = "insert into scene(name,run,r_ring,v_ring,v_media,v_clock,v_inform,shake,backlight,backlightTime,bluetooth,re) values(?,?,?,?,?,?,?,?,?,?,?,?)";
db.execSQL(sql, new Object[] { Const.MODE_GENERAL, 1, "Riffing.mp3",
5, 10, 5, 5,0,128,60,0,"General Mode"});
// 震动
sql = "insert into scene(name,run,r_ring,v_ring,v_media,v_clock,v_inform,shake,backlight,backlightTime,bluetooth,re) values(?,?,?,?,?,?,?,?,?,?,?,?)";
db.execSQL(sql, new Object[] { Const.MODE_VIBRATE, 0, "Riffing.mp3",
0, 0, 0, 0,1,128,60,0,"Vibrate Mode"});
// 静音
sql = "insert into scene(name,run,r_ring,v_ring,v_media,v_clock,v_inform,shake,backlight,backlightTime,bluetooth,re) values(?,?,?,?,?,?,?,?,?,?,?,?)";
db.execSQL(sql, new Object[] {Const.MODE_SILENT, 0, "Riffing.mp3",
0, 0, 0, 0,0,128,60,0,"Silent"});
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "DROP TABLE IF EXISTS " + TABLE_ROUTINE;
db.execSQL(sql);
sql = "DROP TABLE IF EXISTS " + TABLE_DETAIL;
db.execSQL(sql);
// sql = "DROP TABLE IF EXISTS " + TABLE_RING;
// db.execSQL(sql);
//
// sql = "DROP TABLE IF EXISTS " + TABLE_VOLUMe;
// db.execSQL(sql);
sql = "DROP TABLE IF EXISTS " + TABLE_SCENCE;
db.execSQL(sql);
onCreate(db);
}
//
// /**
// * DB操作[增、删、改]
// * @param sql
// * @param args
// */
public void execSQL(String sql, Object[] args){
SQLiteDatabase db = this.getReadableDatabase();
db.execSQL(sql,args);
}
/**
* DB查询
* @param sql
* @param args
* @return
*/
public Cursor query(String sql, String[] args){
SQLiteDatabase db = this.getReadableDatabase();
return db.rawQuery(sql, args);
}
/*
* create table foo ( id INTEGER NOT NULL PRIMARY KEY );
*
* CREATE TABLE bar ( id INTEGER NOT NULL PRIMARY KEY, foo_id INTEGER NOT
* NULL CONSTRAINT fk_foo_id REFERENCES foo(id) ON DELETE CASCADE ); CREATE
* TRIGGER fki_bar_foo_id BEFORE INSERT ON bar FOR EACH ROW BEGIN SELECT
* RAISE(ROLLBACK, 'insert on table "bar" violates foreign key constraint
* "fk_foo_id"') WHERE (SELECT id FROM foo WHERE id = NEW.foo_id) IS NULL;
* END; CREATE TRIGGER fkd_bar_foo_id BEFORE DELETE ON foo FOR EACH ROW
* BEGIN SELECT RAISE(ROLLBACK, 'delete on table "foo" violates foreign key
* constraint "fk_foo_id"') WHERE (SELECT foo_id FROM bar WHERE foo_id =
* OLD.id) IS NOT NULL; END;
*/
}