昨天的学习进行到数据库的时候出现了错误,所以今天打算进行详细的数据库学习。
创建数据库
首先要看这个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的权限问题,无法打开数据库进行建表,之后就在网上搜索这个问题,但是最后还是失败了。