ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Android中的数据库——SqLite
[打印本页]
作者:
缠丝猫
时间:
2024-9-18 04:22
标题:
Android中的数据库——SqLite
一、Android应用中的数据库——SqLite
导语:知其然,更要知其一定,对于一名安卓开辟的程序员来说,相识安卓手机体系中的存储是很告急的一部门,而sqlite就是手机自带的轻量级数据库,其作用和场景如下:
购物:离线下,查看一下app的数据,有相称一部门是存储在数据库中的,可以购物APP下存储的购物车商品
谈天APP:好比离线下的谈天APP,其可以缓存账号和密码
二、使用SqLite进行开辟
注:在SqLite的创建使用中,SQLiteOpenHelper类是必不可少的,它用于帮助我们简化创建和更新数据库版本的操作,其使用也很简单,必要创建一个类其继承即可。
步骤1.创建自定义类DatabaseHelper去继承SQLiteOpenHelper
代码如下(示例):
/**
* 数据库的辅助类——方便更好的创建和更新数据库
*/
public class DatabaseHelper extends SQLiteOpenHelper {
/**
*
* @param context
* 参数1:上下文 参数2:数据库名称 参数3:默认游标 参数4:版本号
*/
public DatabaseHelper(@Nullable Context context) {
super(context,"database",null,1);
}
//数据库只在第一次创建的时候调用该方法
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(TAG, "创建数据库: ");
}
/**
* 升级数据库版本的时候调用
* @param db The database.
* @param oldVersion The old database version.
* @param newVersion The new database version.
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d(TAG, "更新数据库: ");
}
}
复制代码
主要代码:
其1:
//数据库只在第一次创建的时候调用该方法
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(TAG, "创建数据库: ");
}
复制代码
该方法只在数据库database第一次创建的时候调用,可以在该方法内里编写数据库所必要的字段
//1.创建字段
String sql = "create table " + Constants.TABLE_NAME + "(_id integer primary key,name varchar(255),age integer,salary integer)";
//2.执行sql语句
db.execSQL(sql);
复制代码
其2
:
/**
* 升级数据库版本的时候调用
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d(TAG, "更新数据库: ");
}
复制代码
该方法是在数据库进行版本更新的时候调用(只能一次性添加一个字段)
String sql;
switch (oldVersion){
case 1:
sql = "alter table " + Constants.TABLE_NAME + " add phone integer";//TODO 一次性只能更改一条
db.execSQL(sql);
break;
case 2:
sql="alter table " + Constants.TABLE_NAME + " add address varchar";//注意空格
db.execSQL(sql);
break;
case 3:
break;
}
复制代码
步骤2.创建操作数据库的类Dao.java
/**
* 操作数据库的类——增删改查
*/
public class Dao {
private static final String TAG = "Dao";
private final DatabaseHelper mHelper;
public Dao(Context context) {
//创建数据库
mHelper = new DatabaseHelper(context);
}
/**
* 插入数据 数据不要写死
*/
public void insert() {
}
/**
* 删除数据
*/
public void delete() {
}
/**
* 修改数据
*/
public void update() {
}
/**
* 查询数据
*/
public void query() {
}
}
复制代码
该类只要作用是进行增编削查操作
步骤3.创建数据库
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据库
DatabaseHelper helper=new DatabaseHelper(this);
helper.getWritableDatabase();
}
}
复制代码
关键代码:
//创建数据库
DatabaseHelper helper=new DatabaseHelper(this);
helper.getWritableDatabase();
复制代码
实行该代码事后,可以在/data/data/包名/databases下找到该数据库
步骤4.补全代码
DatabaseHelper类——数据库的辅助类
/**
1. 数据库的辅助类——方便更好的创建和更新数据库
*/
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String TAG=DatabaseHelper.class.getSimpleName();
/**
*
* @param context
* 参数1:上下文 参数2:数据库名称 参数3:默认游标 参数4:版本号
*/
public DatabaseHelper(@Nullable Context context) {
super(context,Constants.DATABASE_NAME,null,Constants.VERSION_CODE);
}
//数据库只在第一次创建的时候调用该方法
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(TAG, "创建数据库: ");
//1.创建字段
String sql = "create table " + Constants.TABLE_NAME + "(_id integer primary key,name varchar(255),age integer,salary integer)";
//2.执行sql语句
db.execSQL(sql);
}
/**
* 升级数据库的时候调用
* @param db The database.
* @param oldVersion The old database version.
* @param newVersion The new database version.
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d(TAG, "更新数据库: ");
String sql;
switch (oldVersion){
case 1:
sql = "alter table " + Constants.TABLE_NAME + " add phone integer";//TODO 一次性只能更改一条
db.execSQL(sql);
break;
case 2:
sql="alter table " + Constants.TABLE_NAME + " add address varchar";//注意空格
db.execSQL(sql);
break;
case 3:
break;
}
}
}
复制代码
Dao操作数据库的类——增编削查
/**
1. 操作数据库的类——增删改查
*/
public class Dao {
private static final String TAG = "Dao";
private final DatabaseHelper mHelper;
public Dao(Context context) {
//创建数据库
mHelper = new DatabaseHelper(context);
}
/**
* 插入数据 数据不要写死
*/
public void insert() {
SQLiteDatabase db = mHelper.getWritableDatabase();//等会测试一下这里是否可以重用
ContentValues contentValues = new ContentValues();//ContentValues存储数据库数据的类
contentValues.put("_id", 2);
contentValues.put("name", "jie");
contentValues.put("age", 28);
contentValues.put("salary", 200);
contentValues.put("phone", 2122);
db.insert(Constants.TABLE_NAME, null, contentValues);
db.close();
}
/**
* 删除数据
*/
public void delete() {
SQLiteDatabase db = mHelper.getWritableDatabase();//等会测试一下这里是否可以重用
int deleteNums = db.delete(Constants.TABLE_NAME, null, null);
Log.d(TAG, "delete个数: "+deleteNums);
db.close();
}
/**
* 修改数据
*/
public void update() {
SQLiteDatabase db = mHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("phone", "110");
String selection = "_id = ?";//符合修改条件的
String[] selectionArgs = {"1"};//指定更改后的数据
db.update(Constants.TABLE_NAME, contentValues, selection, selectionArgs);//指定某一个值更改
db.close();
}
/**
* 查询数据
*/
public void query() {
SQLiteDatabase db = mHelper.getWritableDatabase();
Cursor query = db.query(Constants.TABLE_NAME, null, null, null, null, null, null);
while (query.moveToNext()){
int id = query.getInt(0);
String name = query.getString(1);
Log.d(TAG, "id===: "+id+" name==="+name);
}
query.close();
db.close();
}
}
复制代码
Constants ——常量类
/**
* 常量类
*/
public class Constants {
public static final String DATABASE_NAME="database_name";//数据库名称
public static final int VERSION_CODE=2;//数据库版本
public static final String TABLE_NAME="database_name";//表名
}
复制代码
MainActivity——实行程序
public class MainActivity extends AppCompatActivity {
private Dao dao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据库
DatabaseHelper helper=new DatabaseHelper(this);
helper.getWritableDatabase();
dao = new Dao(this);
dao.insert();
}
}
复制代码
天生的数据库截图:
三、SqLite数据库中的事务
事务具备安全性和高效性
安全性:可以保持数据的同等,好比可以办理转账的时候停电等突发情况,账号数据不统一问题
高效性:使用事务,代码实行速度更快
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4