GVKun编程网logo

android – 从sqlite数据库创建json对象

7

在本文中,我们将带你了解android–从sqlite数据库创建json对象在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的androidSQLite数据库总结、AndroidSqlite

在本文中,我们将带你了解android – 从sqlite数据库创建json对象在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的android SQLite数据库总结、Android Sqlite数据库架构、Android Sqlite数据库详解、Android studio 连接SQLite数据库 +创建数据库+创建数据库表

本文目录一览:

android – 从sqlite数据库创建json对象

android – 从sqlite数据库创建json对象

我需要从sqlite数据库创建JSON OBJECT.而且我想在我的服务器中存储JSON OBJECT.我想将我的sqlite数据库中的整个表转换为JSON对象,这样我的数据就不会在我的服务器中占用太多空间.这可能吗?如果是这样,有人可以通过提供适当的资源来帮助我吗?

解决方法:

从sqlite数据库创建JSON OBJECT – 我试过这样的事情.你的意思是将我的sqlite数据库中的整个表转换为Json对象???

JSONObject jsonObject = new JSONObject();

ArrayList<DrugDetails> drugDetails = DataInterface
            .getSelectedDrugDetails();//this should be ur db query which returns the arraylist                          
    if (drugDetails != null && drugDetails.size() > 0) {
        JSONArray array = new JSONArray();
        for (DrugDetails selectedDrugDetails : drugDetails) {
            JSONObject json = new JSONObject();
            json.put(APPOINTMENT_ID, ""+"selectedDrugDetails.getAppoinmentID()");
            json.put(DOCUMENT_ID, ""+selectedDrugDetails.getId());
            array.put(json);
        }
        jsonObject.put(COLLAteraL_LIST, array);
    }  

android SQLite数据库总结

android SQLite数据库总结

sqlite

sqlite是一种超轻量级的嵌入式数据库,大小只有几百KB,但是其语法支持标准sql语法,同时还遵循了数据库的ACID事务,所以学过其他数据库的开发人员都很容易掌握其使用。

sql语法就不介绍了,直接看在android中的使用

sqliteOpenHelper――封装好的数据库操作辅助类,需重写

重写方法

onCreate:初始化数据库,创建表,添加初始数据

onUpgrade:数据库版本升级时的数据库操作,如备份删除数据库等

常用方法

getReadableDatabase()    获取sqliteDatabase对象,操作数据库

getWritableDatabase()        获取sqliteDatabase对象,操作数据库

区别:在磁盘空间满或不可写时,1方法将获得只读的数据库对象,而2方法会报错,在正常情况下,获取到的都是可读写的数据库对象。

import android.content.Context;
import android.database.sqlite.sqliteDatabase;
import android.database.sqlite.sqliteOpenHelper;
public class DBHelper extends sqliteOpenHelper {
 private static final String name="my";//数据库名
 private static final int version=1;//版本号
 //重写构造方法的时候选择参数少的一项
 public DBHelper(Context context) {
  //1:上下文 2:数据库名称 3:游标创建工厂 4:数据库版本 版本只能是整数 1 2 3..
  super(context,name,null,version);
 }
 //数据库的初始化 sqliteDatabase数据库操作对象
 //一般只在第一次运行和版本更新的时候调用
 @Override
 public void onCreate(sqliteDatabase db) {
  //创建数据库 主键默认自增
  db.execsql("create table student(" +
    "_id integer not null primary key autoincrement," +
    "name varchar(20)," +
    "phone varchar(11)," +
    "gender varchar(2))");
  //添加一条测试数据
  db.execsql("insert into student values(null,?,?)",new Object[]{"小黑","12345678901","男"});
 }
 /**
  * 在版本升级的时候调用
  * 修改version 为2 表示版本升级 就会调用这个方法
  * @param db 数据库操作对象
  * @param oldVersion 旧版本号
  * @param newVersion 新版本号
  */
 @Override
 public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {
 }
}

在android数据库的创建是需要创建对象才能创建的

在activity类中创建出一个数据库类对象

创建好数据对象就可以操作数据了 通过sqliteDatabase获取   两种获取方法的区别上面已经提到过了

     //创建数据
  DBHelper helper =new DBHelper(this);
  //调用数据操作对象
  sqliteDatabase dbWrite=helper.getWritableDatabase();
  sqliteDatabase dbRead=helper.getReadableDatabase();

sqliteDatabase给我们提供了很多操作数据的方法 

删除:(int) delete(String table,String whereClause,String[] whereArgs) 

   table: 表名

   whereClause:where条件  列名 占位符  id=?

   whereArgs:参数值数组

添加:(long) insert(String table,String nullColumnHack,ContentValues values)  

    nullColumnHack:为空列

    ContentValues values:通过键值对存储添加的数据  key为列 value为值

    insert方法 底层是通过拼接字符串的方式 如果ContentValues是空的 拼接成的sql语句无法执行会报错 所以给一个可以为空的列当ContentValues为空时也可以执行 有兴趣的可以看一下源码

更新:(int) update(String table,ContentValues values,String[] whereArgs)

   参数意思同上

查询:(Cursor) query(boolean distinct,String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit)

    返回值是一个游标   这个query参数较多 简单的查询就还是写一条sql语句简单点

      boolean distinct 去重复

      String table 表名

      String[] columns要查询的列

      String selection查询条件

      String[] selectionArgs查询参数值

      String groupBy分组

      String having分组条件

      String orderBy排序

      String limit分页查询限制

关闭数据库:(void) close()

执行一条sql语句:(void) execsql(String sql) 增删改查

查询查询sql:(Cursor) rawQuery(String sql,String[] selectionArgs)

事务

try {
   db.beginTransaction();//开启事务
   // db.update();
   // db.insert();
   db.setTransactionSuccessful(); //没有设置事物成功 finally就会回滚
  } catch (Exception e) {
   e.printstacktrace();
  }finally {
   db.endTransaction();
  }

贴代码咯  执行sql语句 和封装好的方法

查询

private void query() {
  StringBuffer sb=new StringBuffer("select * from student where 1=1");
  //参数集合
  List<String> params=new ArrayList<>();
  if(!TextUtils.isEmpty(id)){
   sb.append(" and _id=?");
   params.add(id);
  }
  if(!TextUtils.isEmpty(phone)){
   sb.append(" and phone=?");
   params.add(phone);
  }
  if(!TextUtils.isEmpty(name)){
   sb.append(" and name=?");
   params.add(name);
  }
  if(!TextUtils.isEmpty(gender)){
   sb.append(" and gender=?");
   params.add(gender);
  }
  sqliteDatabase db=helper.getReadableDatabase();
  String [] projection=new String [params.size()];
  params.toArray(projection);
  //返回值 游标
  Cursor cursor=db.rawQuery(sb.toString(),projection);
    //判断游标是否为空,是否有一个值
  while(cursor!=null&&cursor.movetoNext()){
   // getColumnIndex获取列的下标 cursor.getXXXX()获取指定列的值
   String name=cursor.getString(cursor.getColumnIndex("name"));
   Integer id=cursor.getInt(cursor.getColumnIndex("_id"));
  }
 }

用不到的参数就让它为空吧   遍历数据就while循环就好咯

Cursor c = db.query("student",null);//查询并获得游标

更新

private void update() {
  StringBuffer sb=new StringBuffer("update student set ");
  List params=new ArrayList();
  if(!TextUtils.isEmpty(phone)){
   sb.append("phone=?,");
   params.add(phone);
  }
  if(!TextUtils.isEmpty(name)){
   sb.append("name=?,");
   params.add(name);
  }
  if(!TextUtils.isEmpty(gender)){
   sb.append("gender=?,");
   params.add(gender);
  }
  if (params.size()!=0){
   //更新操作拼接字符串末尾有一个","需要去除
   //删除最后一位的“,”
   sb.setLength(sb.length()-1);
   sb.append(" where 1=1");
   //通过id指定 更新那行数据
   if(!TextUtils.isEmpty(id)){
    sb.append(" and _id=?");
    params.add(id);
   }else{
    Toast.makeText(this,"请填写id",Toast.LENGTH_SHORT).show();
    return;
   }
   sqliteDatabase db=helper.getWritableDatabase();
   Object [] o=new Object[params.size()];
   params.toArray(o);//将数据存放到指定的数组中
   db.execsql(sb.toString(),o);
  }
 }
ContentValues cv = new ContentValues();//实例化ContentValues
cv.put("name","123");//添加要更改的字段及内容
String whereClause = "phone=?";//修改条件
String[] whereArgs = {"12312313213"};//修改条件的参数
db.update("student",cv,whereClause,whereArgs);//执行修改

删除

private void delete() {
  getAllText();
  //拼接sql语句
  StringBuffer sb=new StringBuffer("delete from student where 1=1");
  //保存参数的list
  List params=new ArrayList();
  //判断条件 动态拼接
  if(!TextUtils.isEmpty(id)){
   sb.append(" and _id=?");
   params.add(id);
  }
  if(!TextUtils.isEmpty(phone)){
   sb.append(" and phone=?");
   params.add(phone);
  }
  if(!TextUtils.isEmpty(name)){
   sb.append(" and name=?");
   params.add(name);
  }
  if(!TextUtils.isEmpty(gender)){
   sb.append(" and gender=?");
   params.add(gender);
  }
  sqliteDatabase db=helper.getWritableDatabase();
  if (params.size()!=0){
   Object [] o=new Object[params.size()];
   params.toArray(o);//将数据存放到指定的数组中
   //执行删除
   db.execsql(sb.toString(),o);
  }else{
   db.execsql(sb.toString());
  }
  Toast.makeText(this,"删除完成",Toast.LENGTH_SHORT).show();
 }
String whereClause = "name=?";//删除的条件
String[] whereArgs = {"123"};//删除的条件参数
db.delete("student",whereArgs);//执行删除

增加

private void insert() {//保存数据到object数组
  Object [] o=new Object[]{name,phone,gender};
  //获取数据库操作对象
  sqliteDatabase db=helper.getWritableDatabase();
  //sql:sql语句 bingArgs:参数数组
  db.execsql("insert into student values(null,o);
  //关闭连接
  db.close();
  Toast.makeText(this,"增加成功",Toast.LENGTH_SHORT).show();
 }
ContentValues cv = new ContentValues();//实例化一个ContentValues用来装载待插入的数据
cv.put("name","123"); 
db.insert("student",cv);//执行插入操作

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧!

Android Sqlite数据库架构

Android Sqlite数据库架构

我想我已经用android创建了一个sqllite数据库,但每次我去做一个插入它声称一个列不存在.如何查看模式,是在对象创建时调用的onCreate方法?

解决方法:

你可以用代码来做. sqlite有一个名为“sqlite_master”的表,它保存架构信息.

    /**
     * Get all table Details from the sqlite_master table in Db.
     * 
     * @return An ArrayList of table details.
     */
    public ArrayList<String[]> getDbTableDetails() {
        Cursor c = db.rawQuery(
                "SELECT name FROM sqlite_master WHERE type='table'", null);
        ArrayList<String[]> result = new ArrayList<String[]>();
        int i = 0;
        result.add(c.getColumnNames());
        for (c.movetoFirst(); !c.isAfterLast(); c.movetoNext()) {
            String[] temp = new String[c.getColumnCount()];
            for (i = 0; i < temp.length; i++) {
                temp[i] = c.getString(i);
            }
            result.add(temp);
        }

        return result;
    }

更简单的方法是在模拟器上运行它.

>开放ddms观点
>查找数据/数据/ PACKAGENAME / database / YOURFILE
>单击图中右上角的数据库按钮.

打开

Android Sqlite数据库详解

Android Sqlite数据库详解

什么是sqlite

Android自带的嵌入式数据库,可使用sql语言

怎么使用

sqlite通过sqliteOpenHelper类来管理数据库

在这里插入图片描述

sqliteOpenHelper 的常用方法

方法名 方法介绍
getWritableDatabase() 创建 or 打开 可读/写的数据库(通过 返回的sqliteDatabase对象 进行操作)
getReadableDatabase() 创建 or 打开 可读的数据库(通过 返回的sqliteDatabase对象 进行操作)
onCreate(sqliteDatabase db) 数据库第1次创建时 则会调用,即 第1次调用getWritableDatabase() 和 getReadableDatabase()时调用 在继承sqliteOpenHelper类的子类中复写
onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) 数据库升级时自动调用在继承sqliteOpenHelper类的子类中复写
close() 关闭数据库
(Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) 查询数据
(Cursor) rawQuery(String sql, String[] selectionArgs) 运行一个预置的sql语句,返回带游标的数据集(与上面的语句最大的区别 = 防止sql注入)
(int) delete(String table,String whereClause,String[] whereArgs) 删除数据行
(long) insert(String table,String nullColumnHack,ContentValues values) 添加数据行
(int) update(String table, ContentValues values, String whereClause, String[] whereArgs) 更新数据行
(void) execsql(String sql) 执行一个sql语句,可以是一个select or 其他sql语句 即 直接使用String类型传入sql语句 & 执行

实际使用

使用步骤

  • 自定义数据库子类(继承sqliteOpenHelper类)
  • 创建数据库
  • 操作数据库(增删改查)

下面我们依次介绍

  • 自定义数据库子类(继承sqliteOpenHelper类)
/** 
  * 创建数据库子类,继承自sqliteOpenHelper类
  * 需 复写 onCreat()、onUpgrade()
  */ 
public class DatabaseHelper extends sqliteOpenHelper {

    // 数据库版本号
    private static Integer Version = 1;

    /** 
     * 构造函数
     * 在sqliteOpenHelper的子类中,必须有该构造函数
     */ 
    public DatabaseHelper(Context context, String name, sqliteDatabase.CursorFactory factory,
                          int version) {
        // 参数说明
        // context:上下文对象
        // name:数据库名称
        // param:一个可选的游标工厂(通常是 Null) 
        // version:当前数据库的版本,值必须是整数并且是递增的状态

        // 必须通过super调用父类的构造函数
        super(context, name, factory, version);
    }
    
    /** 
     * 复写onCreate()
     * 调用时刻:当数据库第1次创建时调用
     * 作用:创建数据库 表 & 初始化数据
     * sqlite数据库创建支持的数据类型: 整型数据、字符串类型、日期类型、二进制
     */ 
    @Override
    public void onCreate(sqliteDatabase db) {
              // 创建数据库1张表
              // 通过execsql()执行sql语句(此处创建了1个名为person的表)
              String sql = "create table person(id integer primary key autoincrement,name varchar(64),address varchar(64))"; 
              db.execsql(sql); 

              // 注:数据库实际上是没被创建 / 打开的(因该方法还没调用)
              // 直到getWritableDatabase() / getReadableDatabase() 第一次被调用时才会进行创建 / 打开 
    }

    /** 
     * 复写onUpgrade()
     * 调用时刻:当数据库升级时则自动调用(即 数据库版本 发生变化时)
     * 作用:更新数据库表结构
     * 注:创建sqliteOpenHelper子类对象时,必须传入一个version参数,该参数 = 当前数据库版本, 若该版本高于之前版本, 就调用onUpgrade()
     */ 

    @Override
    public void onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) {
        // 参数说明: 
        // db : 数据库 
        // oldVersion : 旧版本数据库 
        // newVersion : 新版本数据库 

        // 使用 sql的ALTER语句
        String sql = "alter table person add sex varchar(8)";  
        db.execsql(sql);  
    }

}
  • 创建数据库
// 步骤1:创建DatabaseHelper对象
 // 注:此时还未创建数据库
 sqliteOpenHelper dbHelper = new DatabaseHelper(sqliteActivity.this,"test_carson");

// 步骤2:真正创建 / 打开数据库
 sqliteDatabase sqliteDatabase = dbHelper.getWritableDatabase(); // 创建 or 打开 可读/写的数据库
 sqliteDatabase sqliteDatabase = dbHelper.getReadableDatabase(); // 创建 or 打开 可读的数据库

  • 操作数据库(增删改查)

1 插入数据库

 /** 
    *  操作1:插入数据 = insert()
    */ 
        // a. 创建ContentValues对象
        ContentValues values = new ContentValues();

        // b. 向该对象中插入键值对
        values.put("id", 1);
        values.put("name", "carson");
            //其中,key = 列名,value = 插入的值
            //注:ContentValues内部实现 = HashMap,区别在于:ContenValues Key只能是String类型,Value可存储基本类型数据 & String类型

        // c. 插入数据到数据库当中:insert()
        sqliteDatabase.insert("user", null, values);
                // 参数1:要操作的表名称
                // 参数2:sql不允许一个空列,若ContentValues是空,那么这一列被明确的指明为NULL值
                // 参数3:ContentValues对象


        // 使用sql语句插入
        String sql = "insert into user (id,name) values (1,'carson')";
        db.execsql(sql) ;

2 修改数据库

/** 
    *  操作2:修改数据 = update()
    */ 
        // a. 创建一个ContentValues对象
        ContentValues values = new ContentValues();
        values.put("name", "zhangsan");

        // b. 调用update方法修改数据库:将id=1 修改成 name = zhangsan
        sqliteDatabase.update("user", values, "id=?", new String[] { "1" });
            // 参数1:表名(String)
            // 参数2:需修改的ContentValues对象
            // 参数3:WHERE表达式(String),需数据更新的行; 若该参数为 null, 就会修改所有行;?号是占位符
            // 参数4:WHERE选择语句的参数(String[]), 逐个替换 WHERE表达式中 的“?”占位符;

            // 注:调用完upgrate()后,则会回调 数据库子类的onUpgrade()

        // 注:也可采用sql语句修改
        String sql = "update [user] set name = 'zhangsan' where id="1";
        db.execsql(sql);

3 删除数据

 /** 
    *  操作3:删除数据 = delete()
    */
        // 删除 id = 1的数据
        sqliteDatabase.delete("user", "id=?", new String[]{"1"});
            // 参数1:表名(String)
            // 参数2:WHERE表达式(String),需删除数据的行; 若该参数为 null, 就会删除所有行;?号是占位符
            // 参数3:WHERE选择语句的参数(String[]), 逐个替换 WHERE表达式中 的“?”占位符;

        // 注:也可采用sql语句修改
        String sql = "delete from user where id="1";
        db.execsql(sql);

4 查询数据

 /** 
    *  操作4:查询数据1 = rawQuery() 
    *  直接调用 SELECT 语句
    */
        Cursor c = db.rawQuery("select * from user where id=?",new Stirng[]{"1"}); 
        // 返回值一个 cursor 对象

        // 通过游标的方法可迭代查询结果
        if(cursor.movetoFirst()) { 
           String password = c.getString(c.getColumnIndex("password")); 
         }
        
        //Cursor对象常用方法如下:
        c.move(int offset); //以当前位置为参考,移动到指定行  
        c.movetoFirst();    //移动到第一行  
        c.movetoLast();     //移动到最后一行  
        c.movetoPosition(int position); //移动到指定行  
        c.movetoPrevIoUs(); //移动到前一行  
        c.movetoNext();     //移动到下一行  
        c.isFirst();        //是否指向第一条  
        c.isLast();     //是否指向最后一条  
        c.isBeforeFirst();  //是否指向第一条之前  
        c.isAfterLast();    //是否指向最后一条之后  
        c.isNull(int columnIndex);  //指定列是否为空(列基数为0)  
        c.isClosed();       //游标是否已关闭  
        c.getCount();       //总数据项数  
        c.getPosition();    //返回当前游标所指向的行数  
        c.getColumnIndex(String columnName);//返回某列名对应的列索引值  
        c.getString(int columnIndex);   //返回当前行指定列的值 
        
        // 通过游标遍历1个名为user的表
        Cursor result=db.rawQuery("SELECT _id, username, password FROM user");  
         result.movetoFirst();  
         while (!result.isAfterLast()) {  
            int id=result.getInt(0);  
            String name=result.getString(1);  
            String password =result.getString(2);  
            // do something useful with these  
            result.movetoNext();  
          }  
         result.close();


     // 若查询是动态的,使用该方法会复杂。此时使用 query() 会方便很多
     // 注:无法使用sql语句,即db.execsql(sql);

  /** 
    *  操作4:查询数据2 = query() 
    *  直接调用 SELECT 语句
    */
        // 方法说明
        db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy);  
        db.query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);  
        db.query(String distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit); 

        // 参数说明
        // table:要操作的表
        // columns:查询的列所有名称集
        // selection:WHERE之后的条件语句,可以使用占位符
        // groupBy:指定分组的列名
        // having指定分组条件,配合groupBy使用
        // orderBy指定排序的列名
        // limit指定分页参数
        // distinct可以指定“true”或“false”表示要不要过滤重复值

        // 所有方法将返回一个Cursor对象,代表数据集的游标 

        // 具体使用
         Cursor cursor = sqliteDatabase.query("user", new String[] { "id","name" }, "id=?", new String[] { "1" }, null, null, null);
            // 参数1:(String)表名
            // 参数2:(String[])要查询的列名
            // 参数3:(String)查询条件
            // 参数4:(String[])查询条件的参数
            // 参数5:(String)对查询的结果进行分组
            // 参数6:(String)对分组的结果进行限制
            // 参数7:(String)对查询的结果进行排序
            
        // 注:无法使用sql语句,即db.execsql(sql);


5 关闭数据库

  /** 
    *  操作5:关闭数据库 = close()
    *  注:完成数据库操作后,记得调用close()关闭数据库,从而释放数据库的连接
    */
        sqliteDatabase.close();  

6 删除数据库

  /** 
    *  操作6:删除数据库 = deleteDatabase()
    */
        // 删除 名为person的数据库  
        deleteDatabase("test.db");

特别注意

  • 除了“查询”,所有的数据库操作都可使用 sql 语句,即使用下列方法代替:
db.executesql(String sql);  
db.executesql(String sql, Object[] bindArgs);
// sql语句中使用占位符,参数2 = 实际的参数集  
  • 使用建议:都使用sql语句,因为:sql语句 通用 & 简单
  • 原生的方法insert()、delete()等方法具备多个参数,使用复杂

不会sql语句怎么办?

我总结了常用的sql语句

在这里插入图片描述

参考:https://www.jianshu.com/p/8e3f294e2828

Android studio 连接SQLite数据库 +创建数据库+创建数据库表

Android studio 连接SQLite数据库 +创建数据库+创建数据库表

Android studio 之数据库的使用 连接创建sqlite

大家好,欢迎来到寒依。
相信看啦我的教程 当老师问你在学习Android studio 数据库使用过程中遇到什么困难,分享一下你的感悟和解决方法 的时候,你可以直接大胆的说出来: “老师我没有遇到问题,看啦寒依的教程 畅行无阻”

我使用的工具是 Intillij idea 专业版 但是方法都一样 因为 Intellij idea 是Android studio 的祖宗 方法都是一样

Intellij idea专业版 yyds

相信你能看到这篇文章 肯定是在学习Android studio 连接数据库时遇到啦问题。哪恭喜你,你今生都很幸运,不然也不可能你遇到我,哪下面呢就让我给下面带来最精彩都得教程。相信你也会觉得非常的简单。
如果你是大佬就单纯想来看看我,那就当我没说,还请大佬来指点指点,必将感激不敬。
不废话啦, 傻瓜式教程马上开始。小板凳坐好啦,下面才是学习Android 开发正确的打开方式。

sqlite 为Android studio 自带 无需下载

Android studio 接数据库(sqlite),创建数据库

第一步 新建一个新的Android 项目 不会看图

在这里插入图片描述


新建Android 选择一个空的(Empty Activity)项目 接着点击 下一步

在这里插入图片描述


Name 自己取就ok 语言Language 选择 java 点击完成

在这里插入图片描述

接下来才是最精彩的时刻 竖起小耳朵 张大眼睛盯好啦 (新建一个类 )

在这里插入图片描述


DbContect.java

package com.example.dbproject;
import android.content.Context;
import android.database.sqlite.sqliteDatabase;
import android.database.sqlite.sqliteOpenHelper;
import android.widget.Toast;
public class DbContect extends sqliteOpenHelper {
    private static final int VERSION=1;
    private static final String dbnAME="Users.db";   //  创建数据库名叫 Users
    private Context mContext;

    public DbContect(Context context){
        super(context,dbnAME,null,VERSION);
        mContext = context;
    }
    //创建数据库
    public void onCreate(sqliteDatabase db){
        //创建密码表  pwd_tb
        db.execsql("create table pwd_tb (pwd varchar(20) primary key)");
        //创建收入表    user_tb
        db.execsql("create table user_tb(_id integer primary key autoincrement,money decimal," +
                " time varchar(10),type varchar(10),handler varchar(100),mark varchar(200))");
    }
    //数据库版本更新
    public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion)
    {
        db.execsql("drop table if exists pwd_tb");
        db.execsql("drop table if exists user_tb");
        onCreate(db);
    }


}

再来到 activate_main.xml

在这里插入图片描述


activaty_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    <LinearLayout android:layout_width="match_parent"
                  android:layout_height="match_parent">
        <Button
                android:id="@+id/create"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#00BCD4"
                android:textSize="22dp"
                android:text="点击创建Users数据库"
        >
        </Button>
    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

再打开 MainActivaty .java

MainActivaty .java

package com.example.dbproject;

import android.database.sqlite.sqliteDatabase;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
    DbContect helper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

            helper=new DbContect(  MainActivity.this);
            Button btn=findViewById(R.id.create);
            btn.setonClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View V) {
                    sqliteDatabase db=helper.getWritableDatabase();
                }
            });
        }
    }

好啦 代码完事 刚才是最精彩的时刻 现在到啦激动人心的时候
测试一下是否成功 和数据可视化 精彩即将呈现
运行项目

在这里插入图片描述


点开模拟器 小手机

在这里插入图片描述


别急 还没完事 结果还没出呢 再来到

在这里插入图片描述


此时在右下角会跳出一个东西

在这里插入图片描述

到第二个data 下面找到
直接看图吧 不想打字啦

在这里插入图片描述

Users.db 就是我们创建的数据库
接下来可视化
方法一 :

在这里插入图片描述


在这里插入图片描述

嘿嘿 出来啦 激动不激动

在这里插入图片描述

可视化方式二:
将数据库保持下来 用其他的可视化工具打开 直接将 保存的 Users.db 托到 Navicat

在这里插入图片描述


直接托进去 就ok

在这里插入图片描述

好啦 老师再敢问你学习Android studio数据库的使用中有没有什么困难的时候就可以很有底气的跟她说 “老师我没有遇到问题 ,学习中畅行无阻”

教程完毕 欢迎 投稿提问
也欢迎大佬指导
谢谢大家 !

我们今天的关于android – 从sqlite数据库创建json对象的分享已经告一段落,感谢您的关注,如果您想了解更多关于android SQLite数据库总结、Android Sqlite数据库架构、Android Sqlite数据库详解、Android studio 连接SQLite数据库 +创建数据库+创建数据库表的相关信息,请在本站查询。

本文标签: