看若水的 安卓开发从零开始 创建数据库的问题

直接导入的源代码,程序没有报错。但是应该自动创建的一个data.db数据库在fileexplre中找不到
package com.szy.sqlite.dao;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

/**
* @author coolszy
* @blog http://blog.csdn.net/coolszy
*/
public class DBOpenHelper extends SQLiteOpenHelper
{
private static final int VERSION = 1;
private static final String DBNAME = "data.db";
private static final String TAG = "数据库创建";

public DBOpenHelper(Context context)
{
super(context, DBNAME, null, VERSION);
}

@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("create table t_student (sid integer primary key,name varchar(20),age integer)");
Log.i(TAG, "数据库创建成功");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{

}

}
信息也没有提示出来。本来是不用执行任何操作,只要安装到虚拟机上数据库就应该自动创建了的

第1个回答  推荐于2016-07-28
写个测试类加个
public void createDb(){
DbOpenHelper helper = new DbOpenHelper(getContext());
helper.getWritableDatabase();
}
试试看,数据库只有执行helper.getWritableDatabase();时才会创建数据库追问

执行了这个测试方法数据库创建出来了。但是原程序的getWritableDatabase()在另一个java文件的add方法中才有
public DBOpenHelper(Context context)
{
super(context, DBNAME, null, VERSION);
}
意思是这个方法不会创建一个数据库,只有执行add之类的方法数据库才会创建出来吗?

追答

不是啊,getWritableDatabase()这个方法的意思是更改数据库的内容,如果没有数据库就自动创建数据库,所以只要执行了getWritableDatabase()就会创建数据库

本回答被提问者和网友采纳
相似回答