SQLite Databases 数据存储
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;
}
}
SQLite Databases 数据存储的更多相关文章
- Android开发之利用SQLite进行数据存储
Android开发之利用SQLite进行数据存储 Android开发之利用SQLite进行数据存储 SQLite数据库简单介绍 Android中怎样使用SQLite 1 创建SQLiteOpenHel ...
- Android数据存储三剑客——SharedPreferences、File、SQLite
Android中常用的数据存储一般有三种方式:SharedPreferences.文件和SQLite数据库,用来保存需要长时间保存的数据.本文将通过几个具体的小实例来讲解这三种方式的具体实现. 数据存 ...
- Base-Android快速开发框架(二)--数据存储之SharedPreferences
对于App开发者,抽象来说,其实就是将数据以各种各样的方式展示在用户面前以及采集用户的数据.采集用户的数据包括用户的输入.触摸.传感器等,展示的数据通过网络来源于各业务系统,以及用户的 输入数据.在这 ...
- android入门——数据存储
首先是SharedPreferences 用户偏好 package com.example.wkp.aboutdata; import android.content.Intent; import a ...
- Android数据存储之SQLite的操作
Android作为一个应用在移动设备上的操作系统,自然也就少不了数据的存储.然而SQLite作为一个轻型的关系型数据库,基于其轻量.跨平台.多语言接口及安全性等诸多因数考虑,因而Android较大的数 ...
- Android开发手记(18) 数据存储三 SQLite存储数据
Android为数据存储提供了五种方式: 1.SharedPreferences 2.文件存储 3.SQLite数据库 4.ContentProvider 5.网络存储 SQLite 是以嵌入式为目的 ...
- Android开发8:数据存储(二)——SQLite数据库和ContentProvider的使用
前言 啦啦啦各位小伙伴们许久不见了~学期末和过年期间自己忙着做其他事没能及时更新Android开发系列课程的博客,实在是罪过罪过~ 好啦~废话不多说,进入我们今天的主题.今天我们将和大家学习其他的数据 ...
- Android开发8:数据存储(二)——SQLite数据库和ContentProvider的使用
前言 啦啦啦各位小伙伴们许久不见了~学期末和过年期间自己忙着做其他事没能及时更新Android开发系列课程的博客,实在是罪过罪过~ 好啦~废话不多说,进入我们今天的主题.今天我们将和大家学习其他的数据 ...
- Android 数据存储03之SQLite
SQLite数据存储 Android 集成了 SQLite 数据库.它存储在 /data/data/< 项目文件夹 >/databases/ 下.Android 开发中使用 SQLite ...
随机推荐
- PAT乙级 1012. 数字分类 (20)
1012. 数字分类 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一系列正整数,请按要求对数字进 ...
- session讲解(一)——登录网页练习
第一:登陆网页的表单页面login.php <body> <h1>登陆</h1> <form action="loginchuli.php" ...
- JSP-01-搭建Web应用环境
一.搭建Web应用环境 Tomcat 下载会有两种版本,安装版和解压版,这里以解压版为例 Web服务: 是实现“基于Web无缝集成”的目标而提出的全新概念,希望通过Web服务能够实现不同的系统之间的相 ...
- windows下nginx和php环境的配置
至于php的配置,与之前博文中使用apache服务器时一样. 对于nginx的配置,来看看如何修改配置文件: #user nobody; worker_processes ; #error_log l ...
- 白盒测试的学习之路----(五)TestNG的参数分离
之前的测试用例直接嵌套在代码中,不便于维护和测试设计,应该单独把测试用例放在excel内,然后程序从中读取数据到相应的接口内即可.使用ava程序对Microsoft Office格式档案读和写的功能提 ...
- rqnoj-342-最不听话的机器人-dp
dp[i][j][k][[l]: 执行第i步,执行到点(j,k),方向为l时,用的最大步数. 状态转移根据step[i]转移. #include<stdio.h> #include< ...
- 【python cookbook】【数据结构与算法】16.筛选序列中的元素
问题:提取出序列中的值或者根据某些标准对序列做删减 解决方案:列表推导式.生成器表达式.使用内建的filter()函数 1.列表推导式方法:存在一个潜在的缺点,如果输入数据非常大可能会产生一个庞大的结 ...
- api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案
api-ms-win-crt-runtime就是MFC的运行时环境的库, 在windows上编译也是用微软的visual studio C++编译的软件, 底层也会用到微软提供的C++库和runtim ...
- POJ 3903:Stock Exchange(裸LIS + 二分优化)
http://poj.org/problem?id=3903 Stock Exchange Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- 对页面制定区域进行打印,以及打印不显示页脚URL的方法
第一种方式 - 此种方式简单易用,但不能进行页面设置,会在底部显示页面的URL地址. 打印命令:只需在页面上的按钮事件调用这段JS代码 javascript:window.print(); ===== ...