我是SQLite的新手,当我运行应用程序时,
中没有.db文件数据/数据/ your.application.package /数据库/
package com.navigationsystem;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
import android.hardware.SensorManager;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME="navigationsystem.db";
public static final String NODE_ID="nodeID";
public static final String CHILD_ID="childID";
public static final String PARENT_ID="parentID";
private SQLiteDatabase db;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE nodes( nodeID CHAR(1) PRIMARY KEY );");
db.execSQL("CREATE TABLE edges( childID CHAR(1) NOT NULL, parentID CHAR(1) NOT NULL,PRIMARY KEY(childID,parentID) );");
this.db = this.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(NODE_ID, "A");
db.insert("nodes", NODE_ID, cv);
cv.put(NODE_ID, "B");
db.insert("nodes", NODE_ID, cv);
cv.put(NODE_ID, "C");
db.insert("nodes", NODE_ID, cv);
cv.put(NODE_ID, "D");
db.insert("nodes", NODE_ID, cv);
cv.put(NODE_ID, "E");
db.insert("nodes", NODE_ID, cv);
cv.put(NODE_ID, "E");
db.insert("nodes", NODE_ID, cv);
cv.put(CHILD_ID, "A");
cv.put(PARENT_ID, "C");
db.insert("edges", CHILD_ID, cv);
db.insert("edges", PARENT_ID,cv);
cv.put(CHILD_ID, "B");
cv.put(PARENT_ID, "E");
db.insert("edges", CHILD_ID, cv);
db.insert("edges", PARENT_ID,cv);
cv.put(CHILD_ID, "C");
cv.put(PARENT_ID, "D");
db.insert("edges", CHILD_ID, cv);
db.insert("edges", PARENT_ID,cv);
cv.put(CHILD_ID, "C");
cv.put(PARENT_ID, "F");
db.insert("edges", CHILD_ID, cv);
db.insert("edges", PARENT_ID,cv);
db.close();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
android.util.Log.w("Constants", "Upgrading database, which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS constants");
onCreate(db);
}
}
我的代码出了什么问题?我是否需要为此设置任何设置,还是必须创建另一个类来创建数据库文件?
感谢。
答案 0 :(得分:1)
您是否有使用DatabaseHelper类的代码?如果从未使用DatabaseHelper,则永远不会调用其onCreate方法,因此不会创建数据库。
例如,如果您尝试创建内容提供商,那么当向其发送请求时,Android将启动内容提供商(例如,活动将数据插入内容提供商)。在启动时,会调用内容提供程序的onCreate方法,这是创建数据库帮助程序实例的好地方,例如
@Override
public boolean onCreate() {
dbHelper = new DatabaseHelper(getContext());
...
}
Android不会为我们神奇地创建数据库帮助程序实例。
现在,我意识到您可能没有创建内容提供程序,但需要一个数据库帮助程序用于其他目的。但问题可能是相同的 - 没有代码实例化DatabaseHelper类的实例。
需要对您的应用程序进行更详细的描述,以便更加具体地了解您的需求。
答案 1 :(得分:0)
您提供了很好的代码。但您需要提及您在活动中使用的代码
您是否在活动(Launcher)中使用DatabaseHelper?
如果您没有使用它,那么将以下语句放在活动oncreate()中并运行。
DatabaseHelper databaseHelper = new DatabaseHelper();
现在您可以找到您的数据库文件。