我正在使用我从流行的记事本示例中学到的标准方法来构建我的第一个应用程序。
但是我遇到了一个奇怪的问题。
SQLite数据库文件(.db)没有被创建在/data/data/package/databases中。我已经交叉检查了清单文件和OpenHelper文件,参考了HeadFirst android dev. Book(我使用它作为参考),但我发现自己无法弄清楚为什么数据库文件没有被创建..
是否需要特殊权限或者我们需要打开某些东西才能使其正常工作??
奇怪的是,预加载的示例可以正常工作。这意味着记事本示例的'.db'文件已经被创建,但是当我尝试时,它失败了。:(
以下是我的文件。
但是我遇到了一个奇怪的问题。
SQLite数据库文件(.db)没有被创建在/data/data/package/databases中。我已经交叉检查了清单文件和OpenHelper文件,参考了HeadFirst android dev. Book(我使用它作为参考),但我发现自己无法弄清楚为什么数据库文件没有被创建..
是否需要特殊权限或者我们需要打开某些东西才能使其正常工作??
奇怪的是,预加载的示例可以正常工作。这意味着记事本示例的'.db'文件已经被创建,但是当我尝试时,它失败了。:(
以下是我的文件。
包 - database.test
1. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".Database_testActivity"
android:label="@string/app_name" >
</activity>
</application>
2.TestOpenHelper.java
package database.test;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class TestOpenHelper extends SQLiteOpenHelper {
TestOpenHelper(Context context){
super(context,"mydb.db",null,1);
}
@Override
public void onCreate(SQLiteDatabase database){
database.execSQL("create table test_1 " + " (field1 integer primary key, field2 integer);");
}
public void onUpgrade (SQLiteDatabase database, int oldVersion, int newVersion){
database.execSQL("drop table if exists test1");
onCreate(database);
}
}
3.Database_testActivity.java
package database.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
public class Database_testActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView listview = (ListView)findViewById(R.id.test_list);
TestAdapter ta = new TestAdapter();
listview.setAdapter(ta);
TestOpenHelper openHelper = new TestOpenHelper(this);
}
}
我知道这是一个非常基础的问题,但我已经尝试解决了15天,现在我完全感到沮丧。
请帮忙。。
Log
并监视logcat
来跟踪发生的情况。另外,我可能错了,但你尝试在TestOpenHelper
构造函数中使用 "mydb" 作为数据库名称了吗?正如我所说,我可能错了,但我无法避免地感觉使用文件扩展名(例如 "mydb.db")可能会引起问题。 - Squonk使用Log
吗?我尝试了各种名称,但什么都没有发生。谢谢。 - BondLog.d("MyAppName", "In TestOpenHelper constructor");
的内容输入。 - Squonk