android - SQLite 数据库不创建 android

标签 android database sqlite

我有一个非常简单的代码,我正在尝试创建 SQL lite 数据库,但是当我检查我的 DEVICE FILE EXPLORER 文件夹时它没有创建,我的应用程序文件夹下没有任何数据库文件夹。 这是代码: DatabaseHelper.java

package com.example.ali.schoolapp;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Student.db";
public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
    db = this.getWritableDatabase();
    db.execSQL("CREATE TABLE Items " + " (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT, description TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    onCreate(db);
}
}

MainActivity.java

package com.example.ali.schoolapp;      
  import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

DatabaseHelper myDb;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    myDb = new DatabaseHelper(this);

}
}

最佳答案

在您尝试对它做一些事情之前,数据库不会被创建。只有这样(调用 getWritableDatabase 或 getReadableDatabase 时)才会创建数据库。

所以你可以试试:-

myDb = new DatabaseHelper(this); //<<<<<<<<<<< EXISTING LINE
Cursor csr = myDB.getWritableDatabase().query("Items",null,null,null,null,null,null);
csr.close();

然后数据库就创建好了。

  • 请注意,以上内容不是您通常访问数据库的方式,而是一种快速解决方法。通常您会访问类中的方法(可能在 DatabaseHelper 类中)。

附言如果您在调用 super 时更改版本号(第 4 个参数(即 1)),您的 onUpgrade 方法很可能会失败。即当表存在时 onUpgrade 调用 onCreate 你会得到一个错误。你通常会 DROP调用 onCreate 之前的表)。

关于android - SQLite 数据库不创建 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53484000/

相关文章:

android - CONNECT : 400 的意外响应代码

java - 在 Android 上使用 root 调用 'ls' 不会返回任何内容,应用程序挂起

java - 检索数据重复错误

sql - 如何将数据从 2 个其他表插入到 1 个表中?

database - 在 Cassandra 中使用 UUID 作为 URL 表的辅助键的可行性

sqlite - 使用 SQLite3 创建数据库和表

java - CustomListview 在 ListView 中显示两次状态

c# - Unity 2018.3 的 Android 运行时权限

sqlite - 从SQLite的Join/元组上的IN子句的语法中删除?

mysql - 在 SQL 中添加咨询的所有列