数据库的文件没有被创建,我已经在数据->数据->->(我期望的数据库所在的位置)下进行了检查。我无法判断代码或应用程序本身是否存在问题。我认为第二双眼睛会有所帮助。
DatabaseHelper.class
import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "prevGames";
private static final int DB_VERSION = 1;
@SuppressLint("StaticFieldLeak")
public static Context context;
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE playerRecords ("
+ "ID INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "DATE TEXT, "
+ "NAME TEXT, "
+ "TOTAL INTEGER);"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + "playerRecords");
onCreate(db);
}
public void insertRecord(String date, String name, int total)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues recordValues = new ContentValues();
recordValues.put("DATE", date);
recordValues.put("NAME", name);
recordValues.put("TOTAL", total);
long newRecordID = db.insert("playerRecords", null, recordValues);
db.close();
}
}
我尝试过的几件事是更改变量名称、与示例数据库代码进行比较、擦除设备甚至设置新的精确设备。
您的 DatabaseHelper 类似乎定义了 SQLite 数据库的结构和处理,包括表创建和 insertRecord 方法。但是,问题可能在于如何在应用程序中使用或实例化该类。
以下是需要考虑的几点:
注意:我建议(记录)数据库创建事件(无论是否触发)。
上下文初始化:确保使用适当的上下文初始化 DatabaseHelper 类。您当前有一个静态上下文变量,但它没有用于此类中的任何内容。确保传递给 DatabaseHelper 构造函数的 Context 是应用程序的上下文。
数据库创建:onCreate方法应该在第一次创建数据库时调用。看起来 onCreate 方法负责创建“playerRecords”表。确保您在应用程序代码中的某个位置调用 getWritableDatabase() 或 getReadableDatabase() 来触发数据库的创建(如果数据库不存在)。
数据库使用:创建DatabaseHelper实例后,使用insertRecord方法将数据插入数据库。确保在应用程序中正确实例化 DatabaseHelper 后调用此方法。
错误处理:检查数据库创建或数据插入过程中可能产生的日志或异常。记录错误或异常可以帮助识别问题。
数据库位置:数据库文件可能会在某些设备上的不同位置或由于特定配置而创建。您还可以检查与数据库创建或文件访问相关的日志中是否有任何错误。
确保您遵循这些步骤,并且使用正确的数据正确调用 insertRecord 方法。此外,检查日志或调试输出是否存在与数据库处理相关的任何异常或错误。