Android SQLite datatabse:我是否只需要创建一个DBHelper对象并实例化它来创建一个数据库?
SQLite的新特性。只要一个简单的问题,给定我的DBHelper.java,我是否只需要添加以下代码:Android SQLite datatabse:我是否只需要创建一个DBHelper对象并实例化它来创建一个数据库?,android,database,sqlite,file,Android,Database,Sqlite,File,SQLite的新特性。只要一个简单的问题,给定我的DBHelper.java,我是否只需要添加以下代码: DBHelper dbhelper= new DBHelper(MainActivity.this); 在my MainActivity.java中创建我的letterhunter.db 不需要调用onCreate方法吗 这是我的DBHelper.java public class DBHelper extends SQLiteOpenHelper { private static fin
DBHelper dbhelper= new DBHelper(MainActivity.this);
在my MainActivity.java中创建我的letterhunter.db
不需要调用onCreate方法吗
这是我的DBHelper.java
public class DBHelper extends SQLiteOpenHelper {
private static final String TAG = "WordDatabase";
//Table names;
public static final String T_NAME = "WORDS";
public static final String T2_NAME = "SCORE";
//Column names
public static final String C_WKEYS = "Word Keys";
public static final String C_WORDS = "List of Words";
public static final String C_SKEYS = "Score Keys";
public static final String C_SCORE = "Score";
//Database info
public static final String DB_NAME = "letterhunter.db";
public static final int DB_VERSION = 1;
private final Context context;
private SQLiteDatabase db;
public DBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
this.context = context;
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql = String.format("create table %s " + "(%s integer primary key autoincrement, %s text)" , T_NAME, C_WKEYS, C_WORDS);
Log.d (TAG , "create sql "+sql);
db.execSQL(sql);
fillDB();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("drop if exists " + T_NAME);
onCreate(db);
}
private void fillDB(){
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
loadWords();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
//Get the listed words in raw/words.txt and insert to the database
private void loadWords() throws IOException{
Resources resources = context.getResources();
InputStream is = resources.openRawResource(R.raw.words);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String word;
try {
while((word=br.readLine()) != null){
ContentValues values = new ContentValues();
values.put(C_WORDS, word);
db.insert(T_NAME, null, values);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
br.close();
is.close();
}
}
另外,当我在MainActivity中添加上述代码时,我的logcat正在不间断地运行,并且似乎找不到我放在onCreate按钮中的log.d
我是否只需要创建一个DBHelper对象并实例化它来创建一个数据库
实例化帮助程序并对其调用getWritableDatabase()
,以创建数据库
不需要调用onCreate方法吗
当第一次调用
getWritableDatabase()
并且数据库文件不存在时,框架会调用它。我通常会将以下方法添加到我的DB helper类中
private SQLiteDatabase db;
...
public void init() {
if (db == null) {
db = getWritableDatabase();
}
}
是的,您只需要实例化它并将上下文作为参数传递,并且无论在哪里调用
getWritableDatabase()
,都会显式地调用onCreate或onUpgrade方法(无论哪个方法是必要的)
PS。当我在MainActivity中添加上述代码时,我的logcat正在不间断地运行,并且似乎找不到日志。d我将其放在onCreate按钮中。
我想建议您解决此问题的方法,
您的Log.i/d/e/v可以通过以下步骤在logcat中轻松跟踪
Log.i/e/v/d
接受两个参数TAG
和String
,其中String
是可在logcat中显示的消息,TAG
是可跟踪此消息的标记。在eclipse的logcat视图中,您将发现+
,如下图所示
单击此图标,它将显示以下窗口。在此窗口中,您只需输入所需的任何过滤器名称,并需要在“按日志标记”字段中输入标记
。例如,我已输入Setu
,如果您想跟踪特定日志,还可以添加更多详细信息。在最后一个字段按日志级别
中,您可以根据您在代码中编写的内容进行适当选择,例如Log.i的信息
Log.e的错误等;
现在,根据这个例子,只要在我的代码中有以下日志,我就可以通过我指定的过滤器名称在“保存的过滤器”选项卡中跟踪它们。e、 g
Log.i("Setu","This is just and example");
Log.e("Setu","Error occurred here");
Log.d("Setu","Bla... Bla.. Bla...");
您可以创建任意数量的筛选器并跟踪日志
无需调用onCreate方法?
否。它由DBHelper构造函数调用。DBHelper DBHelper=new DBHelper(ManAcitivty.this)代码>维护性在my main activityt.java中创建
main activityt?我猜这些是打字错误。。。