SQLiteDatabase 数据库使用
0 SQLiteDatabases数据库特点
一种切入式关系型数据库,支持事务,可使用SQL语言,独立,无需服务。程序内通过类名可访问数据库,程序外不可以访问。
SQLiteDatabases数据库使用方法
1 创建数据库及表,使用 SQLiteOpenHelper 类
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "zc.db";//数据库名称
public static final String TANLE_NAME = "car";//表名
private static final int DATABASE_VERSION = 1;//数据库版本
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
//数据库第一次被创建时执行此方法,创建表
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table if not exists" + TANLE_NAME +
"(_id integer primary key autoincrement ,brandName varchar ,brandId integer ,logo text)");
}
//如果DATABASE_VERSION改为2,系统发现现有数据库版本不同,即会调用onUpgrade
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("ALTER TABLE" + TANLE_NAME + " ADD COLUMN other text");
}
}
2 操作SQLite数据库表,使用SQLiteDatabase类
SQLiteDatabase 增删改查方法
第一种:execSQL() , rawQuery() ,要求sql语法熟练
第二张:insert(),update(),deleter(),query()
public class DBManager {
private final DBHelper dbHelper;//DBHelper对象
private final SQLiteDatabase db;//SQLiteDatabase对象
public DBManager(Context context) {
dbHelper = new DBHelper(context);
db = dbHelper.getWritableDatabase();//真正创建或打开数据库,获取可读写SQLiteDatabase对象
}
//添加车辆列表
public void addCarList(List<Car> carList) {
db.beginTransaction();
try {
for (Car car : carList) {
add(car);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
//新增
public void add(Car car) {
ContentValues cv = new ContentValues();
cv.put("brandId", car.getBrandId());
cv.put("brandName", car.getBrandName());
cv.put("logo", car.getLogo());
//rowid 返回新添记录的行号,与主键id无关
long rowid = db.insert(DBHelper.TANLE_NAME, null, cv);
db.close();
}
//删除
public void delete(String brandId) {
db.delete(DBHelper.TANLE_NAME, "brandId = ? ", new String[]{brandId});
db.close();
}
//修改
public void update(Car car) {
ContentValues cv = new ContentValues();
cv.put("brandName", car.getBrandName());
db.update(DBHelper.TANLE_NAME, cv, "brandId = ? ", new String[]{car.getBrandId()});
db.close();
}
//查询
public List<Car> queryList() {
List<Car> list = new ArrayList<>();
Cursor cursor = db.rawQuery("select * from " + DBHelper.TANLE_NAME, null);
while (cursor.moveToNext()) {
Car car = new Car();
car.setBrandId(cursor.getString(cursor.getColumnIndex("brandId")));
car.setBrandName(cursor.getString(cursor.getColumnIndex("brandName")));
car.setLogo(cursor.getString(cursor.getColumnIndex("logo")));
list.add(car);
}
cursor.close();
db.close();
return list;
}
public Car queryCar(String brandId) {
Car car = new Car();
Cursor cursor = db.rawQuery("select * from " + DBHelper.TANLE_NAME + " where brandId = ? ", new String[]{brandId});
while (cursor.moveToNext()) {
car.setBrandId(cursor.getString(cursor.getColumnIndex("brandId")));
car.setBrandName(cursor.getString(cursor.getColumnIndex("brandName")));
car.setLogo(cursor.getString(cursor.getColumnIndex("logo")));
}
cursor.close();
db.close();
return car;
}
}
SQLiteDatabase 数据库使用的更多相关文章
- Androide SQLiteDatabase数据库操作(转)
SQLite可以解析大部分的标准SQL语句:建表语句:create table 表名(主键名 integer primary key autoincrement(设置为自增列),其他列名及属性)或(主 ...
- android SQLiteDatabase数据库使用的时候 常见问题
用数据库的时候有时候一定要用_id否则会报错 对于Contentprovider的查询用contentResolver.insert() 一般的数据库操作用db.insert();
- Android数据存储之SQLCipher数据库加密
前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...
- android SQLite数据库总结
SQLite SQLite是一种超轻量级的嵌入式数据库,大小只有几百KB,但是其语法支持标准SQL语法,同时还遵循了数据库的ACID事务,所以学过其他数据库的开发人员都很容易掌握其使用. sql语法就 ...
- Android SQLiteDatabase使用总结
SQLiteDatabase数据库操作 1.创建一个继承了类SQLiteOPenHelper类复写相应的方法,和构造函数 2.然后创建一个类,定义一个私有变量(上述类的实例化对象),在构造函数中进行初 ...
- 数据存储与访问之——初见SQLite数据库
本节引言: 本节学习Android数据库存储与访问的第三种方式:SQLite数据库,和其他的SQL数据库不同,我们并不需要在手机上另外安装一个数据库手机软件,Android系统已经集成了这 ...
- 安卓基础之Sqlite数据库最最基础操作
Sqlite数据库基础操作 摘要:在应用中新建一个数据库,并创建一个数据表写入数据,然后读取表中数据并展示. 主要逻辑: 1.通过继承SQLiteOpenHelper自定义类,定制数据库的表结构,初始 ...
- 使用嵌入式关系型SQLite数据库存储数据
除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库—SQLite, 1.SQLite3支持 ...
- Android 数据库框架GreenDao实战使用
1.添加记录(SQLite 增) 2.删除记录(SQLite 删) 3.修改记录(SQLite 改) 4.查询记录(SQLite 查) <1> DAO查询 <2>QueryBu ...
随机推荐
- 14 (H5*) JS第4天 函数、作用域、预解析
目录 1:函数的其他定义 2:函数作为参数 3:函数作为返回值 4:作用域 5:作用域链 6:预解析 7:预解析分段 复习 <script> /* * 复习: * 函数:把一些重复的代码封 ...
- 一次特殊的“VARCHAR转numeric失败”错误记录
今天接触到一个很有意思的问题.当我在执行一条INSERT的sql语句时,他总是报字符串转数字类型失败. 问题 首先,该表中的所有数字类型的字段都是非必填,其次,每个数字类型的字段都有默认值.最令我感到 ...
- Java相关面试题总结+答案(十)
[JVM] 194. 说一下 JVM 的主要组成部分?及其作用? 类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) ...
- linux shell 中的数组的取值 遍历 替换 删除操作
引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...
- Linux中如何将系统调优
Linux高可用服务器集群解决方案让IT系统管理员可以从容应对许多常见的硬件和软件故障,允许多台计算机一起工作,为关键服务正常运行提供保障,系统管理员可以不中断服务执行维护和升级.Linux服务器有各 ...
- [Python3] 010 字符串:给你们看看我的内置方法 第二弹
目录 少废话,上例子 1. isidentifier() 2. islower() 3. isnumeric() 4. isprintable() 5. isspace() 6. istitle() ...
- [2019杭电多校第四场][hdu6623]Minimal Power of Prime
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6623 题目大意为求一个数的唯一分解的最小幂次.即120=23*31*51则答案为1. 因为数字太大不能 ...
- FZUOJ-2273 Triangles
Problem 2273 Triangles Accept: 109 Submit: 360 Time Limit: 1000 mSec Memory Limit : 262144 KB ...
- 27、前端知识点--webpack面试题(二)
webpack面试题总结 本文主要是对webpack面试会常被问到的问题做一些总结,且文章会不断持续更新 1.webpack打包原理 把所有依赖打包成一个 bundle.js 文件,通过代码分割成单元 ...
- highcharts控制X刻度值整数调整
function chartData() { var app_id = $('.app_id').attr('app_id'); var gener_id = $('.gener_id').attr( ...