无法创建数据库

时间:2018-11-11 22:43:21

标签: java android database sqlite

我正在尝试创建数据库,但是当我在应用程序上打开文件资源管理器时,没有数据库,也没有应该放置数据库的文件夹,但这可能是因为从未创建过数据库。下面是我的代码。谢谢您的帮助

DatabaseHelper.java

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class DatabaseHelper extends SQLiteOpenHelper {
        public static final String DATABASE_NAME = "Student.db";
        public static final String TABLE_NAME = "student_table";
        public static final String COL_1 = "ID";
        public static final String COL_2 = "NAME";
        public static final String COL_3 = "I1Q1";
        public static final String COL_4 = "I1Q2";
        public static final String COL_5 = "I2Q1";
        public static final String COL_6 = "I2Q2";
        public static final String COL_7 = "I3Q1";
        public static final String COL_8 = "I3Q2";
        public static final String COL_9 = "I4Q1";
        public static final String COL_10 = "I4Q2";
        public DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, 1);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,I1Q1 TEXT,I1Q2 TEXT,I2Q1 TEXT,I2Q2 TEXT,I3Q1 TEXT,I3Q2 TEXT,I4Q1 TEXT,I4Q2 TEXT)");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
            onCreate(db);
        }
}

Main Activity.java

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);
    }
}

2 个答案:

答案 0 :(得分:1)

您已经在DatabaseHelper中创建了onCreate()对象,但是尚未使用SQLiteDatabase。这就是从未创建数据库的原因。

myDb.getWrittableDatabase()中调用onCreate(),之后将创建数据库。

答案 1 :(得分:0)

正如Skemelio回答的那样,您需要使用数据库执行任何任务才能真正创建它。

一个不错的建议是使用ORM而不是自己编写数据库的所有代码。 我建议使用Room