Android Sqlite database not open异常

Android Sqlite database not open错误
本帖最后由 a2667717 于 2014-07-21 22:51:31 编辑
我一共写了三个类如下:
第一个继承SQLiteOpenHelper:
public class DatabaseHelper extends SQLiteOpenHelper{
private static final int VERSION=1;
public DatabaseHelper(Context context,String Databasename,CursorFactory factory,int version){
super(context,Databasename,factory,version);
/*this.tableName=tableName;*/
}
public DatabaseHelper(Context context,String DatabaseName){
this(context,DatabaseName,null,VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql="create table "+"book"+" (id integer primary key autoincrement,name varchar(10),content text,time date)";
System.out.print(sql);
Log.e("sql",sql);
db.execSQL(sql);
db.close();
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}

}
第二个类实现对数据库的简单操作:
public class dbDao {
private DatabaseHelper helper;
public dbDao(Context context,String DatabaseName){
this.helper=new DatabaseHelper(context,DatabaseName);
/*SQLiteDatabase db=helper.getReadableDatabase();*/
}
public void createTable(String sql){
SQLiteDatabase db=helper.getWritableDatabase();
db.execSQL(sql);
db.close();
this.helper.close();
}
public String exeQuery(String sql){
SQLiteDatabase db=this.helper.getReadableDatabase();
Cursor cursor=db.rawQuery(sql,null);
StringBuffer buffer=new StringBuffer();
while(cursor.moveToNext()){
buffer.append(cursor.getInt(0)).append(" ").append(cursor.getString(1)).append(" ")
.append(cursor.getString(2)).append(" ").append(cursor.getString(3));
}
cursor.close();
db.close();
this.helper.close();
return buffer.toString();
}
public void exeDo(String sql){
SQLiteDatabase db=this.helper.getWritableDatabase();
db.execSQL(sql);
this.helper.close();
db.close();
}
}
第三个继承Activity:
public class TestSQLite extends Activity {
private TextView selectResult;
private Button select;
private Button insert;
private Button delete;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test_sqlite);
selectResult = (TextView) findViewById(R.id.selectResult);
select = (Button) findViewById(R.id.selcet);
insert = (Button) findViewById(R.id.insert);
delete = (Button) findViewById(R.id.delete);

select.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dbDao database = new dbDao(TestSQLite.this, "test");
database.exeQuery("select * from book");

}
});
insert.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dbDao database = new dbDao(TestSQLite.this, "test");
database.exeDo("insert into book value(null,'小明','小明的书','2014-7-18')");

}
});
delete.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dbDao database = new dbDao(TestSQLite.this, "test");
database.exeDo("delete from book where id=1");

}
});
}

}
------解决方案--------------------
将onCreate()方法中的db.close去掉,原因请查看http://bbs.csdn.net/topics/390838014,我在这里已经做了解答。