博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据存储——SQLite数据库存储——API
阅读量:4682 次
发布时间:2019-06-09

本文共 5973 字,大约阅读时间需要 19 分钟。

一.特点

1.存储具有一定结构的数据

2.文件类型.db

3.存储目录:date/date/包名/datebases/数据库文件

4.应用卸载之后,数据同时被删除

5.数据不被其他应用直接操作

二.SQLite数据库

三.API

1.SQLiteOpenHelper   工具类

(1)是一个抽象类,需要继承并实现了抽象方法之后才能使用

(2)抽象方法:

①void   onCreate(SQLiteDatabase db)

1)创建和初始化数据库的回调方法

2)当连接数据库,未找到数据库文件时调用

②void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

1)升级数据库的回调方法

2)当连接数据库,传入的版本号高于现有的版本号时调用

(3)普通方法:

得到连接类:①getReadableDatabase()  ②getWritableDatabase()

(4)构造方法:

显示调用父类的构造方法:super(context, 数据库名, 游标(一般写null),  版本号)

(5)特点:

①是一个抽象类,需要继承并实现了抽象方法之后才能使用

②没有提供默认的构造方法

2.SQLiteDatabase  数据库连接类

(1)通常是通过工具类来获得

(2)方法

①void  execSQL(sql语句)

1)执行sql语句

2)通常是建表,修改表或删除表等语句

②close()关闭连接

③long  insert(表名,字段的缺省值,ContentValues字段和值的对应)

1)执行数据插入

2)返回值代表新插入的数据的主键值,失败返回-1

④int update(表名,ContentValues,带占位符 ? 的Where条件,String[ ]匹配?的条件值的数组)

1)执行数据修改

2)返回值代表修改数据的条数

 

1 
2
12 13
18
23
26
32
38
39
42
48
54 55
60
65 66 67 68
1 package com.hanqi.testapp3;  2   3 import android.content.ContentValues;  4 import android.database.Cursor;  5 import android.database.sqlite.SQLiteDatabase;  6 import android.database.sqlite.SQLiteOpenHelper;  7 import android.os.Bundle;  8 import android.support.v7.app.AppCompatActivity;  9 import android.util.Log; 10 import android.view.View; 11 import android.widget.EditText; 12 import android.widget.Toast; 13  14 public class TestActivity2 extends AppCompatActivity { 15  16     EditText et_id,et_name,et_sex,et_age; 17  18     @Override 19     protected void onCreate(Bundle savedInstanceState) { 20         super.onCreate(savedInstanceState); 21         setContentView(R.layout.activity_test2); 22  23         et_id=(EditText)findViewById(R.id.et_id); 24         et_name=(EditText)findViewById(R.id.et_name); 25         et_sex=(EditText)findViewById(R.id.et_sex); 26         et_age=(EditText)findViewById(R.id.et_age); 27     } 28  29     //初始化数据库 30     public void bt1_OnClick(View v) 31     { 32         //使用工具类得到数据库对象 33         MyDBHelper myDBHelper=new MyDBHelper("test.db",1); 34  35         //得到连接 36         SQLiteDatabase sd=myDBHelper.getWritableDatabase(); 37  38         Toast.makeText(TestActivity2.this, "连接数据库成功", Toast.LENGTH_SHORT).show(); 39  40         //关闭连接 41         sd.close(); 42     } 43  44     //升级数据库 45     public void bt2_OnClick(View v) 46     { 47         //使用工具类得到数据库对象 48         MyDBHelper myDBHelper=new MyDBHelper("test.db",2); 49  50         //得到连接 51         SQLiteDatabase sd=myDBHelper.getReadableDatabase(); 52  53         Toast.makeText(TestActivity2.this, "连接数据库成功", Toast.LENGTH_SHORT).show(); 54  55         //关闭连接 56         sd.close(); 57     } 58  59     //插入新数据 60     public void bt3_OnClick(View v) 61     { 62         //1.连接数据库,得到数据库连接对象 63  64         //得到连接 65         SQLiteDatabase sd=new MyDBHelper("test.db",2).getReadableDatabase(); 66  67         //2.准备数据 68         ContentValues cv=new ContentValues(); 69         cv.put("name",et_name.getText().toString()); 70         cv.put("sex",et_sex.getText().toString()); 71         cv.put("age",et_age.getText().toString()); 72  73         //3.调用insert(),插入数据 74         long l=sd.insert("t_user", null, cv); 75  76         Toast.makeText(TestActivity2.this, "插入数据的主键="+l, Toast.LENGTH_SHORT).show(); 77  78         //4.关闭连接 79         sd.close(); 80     } 81  82     //数据查询 83     public void bt4_OnClick(View v) 84     { 85         //1.连接数据库,得到数据库连接对象 86         //得到连接 87         SQLiteDatabase sd=new MyDBHelper("test.db",2).getReadableDatabase(); 88  89         //2.全表全字段查询 90         Cursor c=sd.query("t_user", null, null, null, null, null, null); 91  92         //3.遍历结果集 93         while (c.moveToNext()) 94         { 95             //读取数据 96             String str="_id="+c.getLong(c.getColumnIndex("_id"))+"name="+c.getString(1) 97                     +"sex="+c.getString(2)+"age"+c.getString(3); 98  99             Log.e("TAG",str);100         }101 102         c.close();103 104         //4.关闭连接105         sd.close();106     }107 108     //实现SQLiteOpenHelper的内部类109     class MyDBHelper extends SQLiteOpenHelper110     {111         //构造方法112         public MyDBHelper(String dbname,int ver)113         {114             //显示调用父类的构造方法115             //必须在第一行116             super(TestActivity2.this,dbname,null,ver);117         }118 119         //创建初始化数据库120         @Override121         public void onCreate(SQLiteDatabase db) {122 123             //1.执行创建数据库的语句124             String sql="\n" +125                     "CREATE TABLE t_user" +126                     " (_id  INTEGER NOT NULL," +127                     "name  VARCHAR(20) NOT NULL," +128                     "sex  CHAR(1),\n" +129                     "age  INTEGER,\n" +130                     "PRIMARY KEY (\"_id\"))";131             db.execSQL(sql);132 133 134             Log.e("TAG","表创建成功");135 136             //2.执行初始化数据的语句,insert语句137             ContentValues cv=new ContentValues();138 139             cv.put("name", "张三");140             cv.put("sex","男");141             cv.put("age",20);142 143             //执行插入144             long l=db.insert("t_user",null,cv);145 146             Log.e("TAG","初始化数据="+1);147 148         }149 150         //升级数据库151         //触发条件:当版本号增大152         @Override153         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {154 155             //修改数据156             if (newVersion==2)157             {158                 ContentValues cv=new ContentValues();159                 cv.put("name","李四");160 161                 String sql="update t_user set name='李四' where _id=1";162 163                 String[] str={"1","18"};164 165                 //调用db的更新方法166                 int i=db.update("t_user",cv,"_id=? and age>?",str);167 168 169                 Log.e("TAG","升级数据 数据条数="+i);170             }171         }172     }173 }

 

 

 

转载于:https://www.cnblogs.com/cycanfly/p/5557897.html

你可能感兴趣的文章
刚毕业的小鲜肉
查看>>
定义列属性:null,default,PK,auto_increment
查看>>
使用虚拟机办公更安全
查看>>
zookeeper笔记
查看>>
深入理解javascript原型和闭包系列
查看>>
C语言初学 比较五个整数并输出最大值和最小值1
查看>>
Python3实战系列之三(获取印度售后数据项目)
查看>>
Yarn
查看>>
android player,wzplayer for android (gles2.0)渲染 ,声音支持AudioTrack,opensl es
查看>>
PHP获取客户端,PHP获取服务器相关信息
查看>>
videojs中文文档详解
查看>>
正则表达式
查看>>
P1407 稳定婚姻
查看>>
34数据结构与算法分析之---最小生成树
查看>>
Linux下汇编语言学习笔记3 ---
查看>>
使用sqlplus创建表空间
查看>>
Java上机 数据I/O
查看>>
原生js获取元素非行内样式属性的方法
查看>>
VMware装CentOS注意事项 IP
查看>>
代码调试多试几招
查看>>