SQLite使用原生的Sql语句进行增删改查

SQLite使⽤原⽣的Sql语句进⾏增删改查
SQLite 介绍
SQLite 是⼀款内置到移动设备上的轻量型的数据库,SQLite 数据库是⽆类型的,可以向⼀个integer 的列中添加⼀个字符串。
嵌⼊式的数据库,体积⼩ 功能强⼤。
有⼤量相似数据的时候使⽤数据库存储。
在Android平台上,集成了⼀个嵌⼊式关系型数据库—SQLite,SQLite3⽀持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串⽂本)和BLOB(⼆进制对象)数据类型,虽然它⽀持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。 SQLite最⼤的特点是你可以把各种类型的数据保存到任何字段中,但是主键只能是Integer类型的。
强化理论Sqlite数据库⼀般要求主键是_id,当然也可以是id.
SQLite数据类型
⼀般数据采⽤的固定的静态数据类型,⽽SQLite采⽤的是动态数据类型,会根据存⼊值⾃动判断。
SQLite具有以下常⽤的数据类型:
NULL: 这个值为空值;
VARCHAR(n):长度不固定且其最⼤长度为 n 的字串,n不能超过 4000;
CHAR(n):长度固定为n的字串,n不能超过 254;
INTEGER: 值被标识为整数,依据值的⼤⼩可以依次被存储为1,2,3,4,5,6,7,8;
REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号;
TEXT: 值为⽂本字符串,使⽤数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE);
BLOB: 值是BLOB数据块,以输⼊的数据格式进⾏存储。如何输⼊就如何存储,不改变格式;
DATA :包含了 年份、⽉份、⽇期;
TIME: 包含了 ⼩时、分钟、秒;
使⽤sql语句对数据库进⾏增删改查
使⽤步骤
1. 创建数据管理类:
SQLiteOpenHelper 是Android 提供的⼀个抽象⼯具类,负责管理数据库的创建、升级⼯作。如果我们想创建数据库,就需要⾃定义⼀个类继承SQLiteOpenHelper,然后覆写其中的抽象⽅法。
SqliteOpenHelper的⽅法介绍:
1、getReadableDatabase() 创建或者打开⼀个可读写的数据库,如果出现问题(磁盘满等),则打开⼀个只读的数据库。
2、getWritableDatabase() 获得⼀个可读写的数据库。如果磁盘满则会抛异常。
3、onCreate(SQLiteDatabase db) 只有第⼀次创建这个数据库的时候调⽤。⼀般在这个⽅法中创建数据的相应表。
4、onOpen(SQLiteDatabase db) 当每次打开数据库的时候都会调⽤。这个⽅法很少使⽤
5、onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) 当升级数据库即数据库的版本号发⽣改变的时候调⽤,⼀般如果需要修改表结构就写在这⾥.
//db.execSQL(“alert 表名 add 列名列数据类型”);
6、close() 关闭打开的所有数据库对象
2. 实例化数据库管理类,创建数据库
SQLiteOpenHelper 有两个⽅法均可返回SQLiteDatabase 对象:
⼀、getWritableDatabase():
该⽅法返回的对象和另外⼀个⽅法返回的对象没有任何差异,返回的对象对数据库都可以进⾏读、写操作,当磁盘已满或者权限不⾜的情况下该⽅法会抛出异常。
⼆、getReadableDatabase():
跟另外⼀个⽅法相⽐,在磁盘已满的情况下,该⽅法不会抛出异常,⽽是返回⼀个只读的数据库操作对象。
根据这两种⽅法返回对象的差异,如果需要对数据库进⾏查询操作则推荐使⽤后者,如果添加、修改、删除数据则推荐使⽤前者。
案例
SQLiteOpenHelper
/**
* Created by : xiaoyehai
* Create date : 2019/9/11 20:33
* description :数据库管理类,负责管理数据库的创建、升级⼯作
*/
public class MyDbHelper extends SQLiteOpenHelper {
//数据库名字
public static final String DB_NAME ="my.db";
//数据库版本
public static final int DB_VERSION =1;
public MyDbHelper(Context context){
super(context, DB_NAME, null, DB_VERSION);
}
/**
* 在数据库⾸次创建的时候调⽤,创建表以及可以进⾏⼀些表数据的初始化
*
* @param db
*/
@Override
public void onCreate(SQLiteDatabase db){
//创建表
/
/_id为主键并且⾃增长⼀般命名为_id
String sql ="create table person(_id integer primary key autoincrement,name text)";        db.execSQL(sql);
//可以给表初始化⼀些数据
//db.execSQL("insert into person(name) values('⼩⽶')");
}
/**
* 数据库升级的时候回调该⽅法,在数据库版本号DB_VERSION升级的时候才会调⽤
*
* @param db
* @param oldVersion
* @param newVersion
*/
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
//给表添加⼀个字段
//db.execSQL("alter table person add age integer");
}
/**
* 数据库打开的时候回调该⽅法
*
* @param db
*/
@Override
public void onOpen(SQLiteDatabase db){
Log.e("xyh","onOpen: ");
}
}
数据库操作类,封装数据库的增删改查⽅法
/**
* Created by : xiaoyehai
* Create date : 2019/9/11 20:39
* description : 数据库操作类
*/
public class DataBaseDao {
private final MyDbHelper mDbHelper;
public DataBaseDao(Context context){
//实例化数据库管理类
mDbHelper =new MyDbHelper(context);
}
/**
* 插⼊
*
* @param list
*/
public void insert(List<PersonBean> list){
SQLiteDatabase db = WritableDatabase();
if(db.isOpen()){
for(int i =0; i < list.size(); i++){
}
db.close();
}
}
/**
* 更新
*
* @param id
* @param personBean
*/
public void update(int id, PersonBean personBean){
SQLiteDatabase db = WritableDatabase();
if(db.isOpen()){
}
}
/**
* 根据id删除
*/
public void delete(int id){
SQLiteDatabase db = WritableDatabase();
if(db.isOpen()){
db.close();
}
}
/**
* 删除所有
*/
public void deleteAll(){
买断式回购
SQLiteDatabase db = WritableDatabase();
if(db.isOpen()){
//设置id从1开始(sqlite默认id从1开始),若没有这⼀句,id将会延续删除之前的id
潘恩db.close();
}
}日内瓦协议
/
**
* 查询所有
*/
public List<PersonBean>queryAll(){
List<PersonBean> list =new ArrayList<>();
List<PersonBean> list =new ArrayList<>();
SQLiteDatabase db = ReadableDatabase();
if(db.isOpen()){
Cursor cursor = db.rawQuery("select * from person", null);
veToNext()){
//int id = Int(0);
李嘉图int _id = ColumnIndex("_id"));
String name = ColumnIndex("name"));
PersonBean personBean =new PersonBean(_id, name);
list.add(personBean);
}
cursor.close();
db.close();
}
return list;
}
/**
* 根据id查询
*/
public List<PersonBean>query(int id){
List<PersonBean> list =new ArrayList<>();
SQLiteDatabase db = ReadableDatabase();
if(db.isOpen()){
Cursor cursor = db.rawQuery("select * from person where _id=?",new String[]{id +""});
veToNext()){
//int id = Int(0);
int _id = ColumnIndex("_id"));
String name = ColumnIndex("name"));
PersonBean dataBean =new PersonBean(_id, name);
list.add(dataBean);
}
cursor.close();
db.close();
}
return list;
}
}
Activity代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_add;
private Button btn_delete;
private Button btn_update;
private Button btn_query;
private ListView mListView;
private DataBaseDao mDataBaseDao;
@Override胡莱足球
protected void onCreate(Bundle savedInstanceState){
setContentView(R.layout.activity_main);
initView();
mDataBaseDao =new DataBaseDao(this);
}
@Override

本文发布于:2024-09-25 01:19:29,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/24916.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据库   创建   对象   时候   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议