• 数据库学习


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

      创建数据库

    首先要看这个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的权限问题,无法打开数据库进行建表,之后就在网上搜索这个问题,但是最后还是失败了。

  • 相关阅读:
    在TextBrowser显示中,如何让最新的数据永远出现在第一行或者是在窗口的最后显示信息
    在Qtlabel中显示数字十六进制和十进制都可以
    实现 在子界面的button按下,在主界面的label显示。
    今天在Qt子界面中的Button,转到槽转不过去,报错Qt The class containing 'Ui::MainWindow' could not be found in...
    Qt串口接收使用多个LCD控件显示不同的数据
    Qt图标自定义
    Qt绘制动态曲线
    3.3.2Qt的按钮部件
    Mesh Profile (5)启动配置(配网)
    SiliconLabs EFR32BG 定时器输入捕获和脉宽调制
  • 原文地址:https://www.cnblogs.com/2940500426yingxin/p/12300737.html
Copyright © 2020-2023  润新知