昨天的学习进行到数据库的时候出现了错误,所以今天打算进行详细的数据库学习。

  创建数据库

首先要看这个SqliteOpenhelper;

1.写一个类去继承SqliteOpenhelper;

2.实现里边的方法,创建构造方法

参数解释

context 上下文

name  数据库名称

factory  游标工厂

version  版本号

3.创建这个子类的对象,在调用getReadableDatabase()方法创建数据库。

SQL 创建数据库:create database数据库名称【character set 代码】

下面是代码的实例

 1 package com.example.databasedemo;
 2 
 3 import androidx.appcompat.app.AppCompatActivity;
 4 
 5 import android.os.Bundle;
 6 
 7 public class MainActivity extends AppCompatActivity {
 8 
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main);
13 
14         DataBaseHelper helper =new DataBaseHelper(this);
15         helper.getWritableDatabase();
16 
17         /* helper=new DataBaseHelper(this);
18         helper.getWritableDatabase();*/
19     }
20 }
package com.example.databasedemo;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import androidx.annotation.Nullable;

public class DataBaseHelper extends SQLiteOpenHelper {

    private static final String TGA ="DatabaseHelper";

    public DataBaseHelper(@Nullable Context context) {
        super(context, Constants.DATABASE_NAME, null, Constants.VRESION_CODE);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建时回调
        Log.d(TGA,"创建数据库。。。");
        //创建字段
        //sql creat table table_name(
        String sql="creat table "+Constants.TABLE_NAME+"(_id integer,name varchar,age integer,salary integer";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //创建时回调
        Log.d(TGA,"升级数据库。。。");
    }
}
package com.example.databasedemo;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import androidx.annotation.Nullable;

public class DataBaseHelper extends SQLiteOpenHelper {

    private static final String TGA ="DatabaseHelper";

    public DataBaseHelper(@Nullable Context context) {
        super(context, Constants.DATABASE_NAME, null, Constants.VRESION_CODE);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建时回调
        Log.d(TGA,"创建数据库。。。");
        //创建字段
        //sql creat table table_name(
        String sql="creat table "+Constants.TABLE_NAME+"(_id integer,name varchar,age integer,salary integer";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //创建时回调
        Log.d(TGA,"升级数据库。。。");
    }
}
package com.example.databasedemo;

public class Constants {
    public static final String DATABASE_NAME="sunofbeach.db";
    public static final int VRESION_CODE=1;
    public static final String TABLE_NAME = "emplyee";
}

但是代码写好后运行测试,程序闪退,无法运行,之后查资料了解到是因为Androidstudio的data的权限问题,无法打开数据库进行建表,之后就在网上搜索这个问题,但是最后还是失败了。

posted on 2020-02-12 20:31  迎新  阅读(156)  评论(0编辑  收藏  举报