SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少。

一般有以下几个关键步骤:

1.创建数据库

2.创建表

3.操作:增删改查

4.关闭数据库

5.删除表(非必选)

SQLiteOpenHelper是SQLiteDatabse的一个帮助类,用来管理数据的创建和版本更新。一般的用法是定义一个类继承SQLiteOpenHelper,并实现两个回调方法,OnCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabse, int oldVersion, int newVersion)来创建和更新数据库。

下面新建类MyDatabaseHelper继承自SQLiteOpenHelper,并创建了表people

public class MyDatabaseHelper extends SQLiteOpenHelper {

    public static final String CREATE_PEOPLE = "create table people ("+"id integer primary key autoincrement,"+"name text,"+"age int,"+"price double)";

    public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
} @Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//创建表
sqLiteDatabase.execSQL(CREATE_PEOPLE);
} @Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { //删除旧表重新创建
sqLiteDatabase.execSQL("drop table if exists people");
onCreate(sqLiteDatabase);
}
}

下面采用了两种方式来展示增删改查

第一种:纯SQL语句

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
private MyDatabaseHelper myDatabaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //增加version 来删除之前的表信息
myDatabaseHelper = new MyDatabaseHelper(this,"peopleInfo.db",null,9);
//创建数据库
myDatabaseHelper.getWritableDatabase(); //打开数据库
SQLiteDatabase database = myDatabaseHelper.getWritableDatabase();
//新增zhangsan 18 11.11
// ContentValues values = new ContentValues();
// values.put("name","zhangsan");
// values.put("age",18);
// values.put("price",11.11);
// database.insert("people",null,values); database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"zhangsan","18","11.11"}); //新增lisi 28 22.22
// values.clear();
// values.put("name","lisi");
// values.put("age",28);
// values.put("price",22.22);
// database.insert("people",null,values); database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"lisi","28","22.22"}); //新增wangwu 48 44.44
// values.clear();
// values.put("name","wangwu");
// values.put("age",48);
// values.put("price",44.44);
// database.insert("people",null,values); database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"wangwu","48","44.44"}); //删除zhangsan信息
// database.delete("people","name = ?",new String[] {"zhangsan"}); database.execSQL("delete from people where name = ?",new String[] {"zhangsan"}); //更改lisi age=38
// values.clear();
// values.put("age",38);
// database.update("people",values,"name = ?",new String[] {"lisi"}); database.execSQL("update people set age = ? where name = ? ",new String[] {"38","lisi"}); //查询people表的内容并打印
// Cursor cursor = database.query("people",null,null,null,null,null,null,null);
Cursor cursor = database.rawQuery("select * from people",null);
if (cursor.moveToFirst()){
do{
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
double price = cursor.getDouble(cursor.getColumnIndex("price")); Log.d(TAG, "onCreate: "+name+" "+age+" "+price); }while (cursor.moveToNext()); }
cursor.close(); }
}

第二种:Android对象方式

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
private MyDatabaseHelper myDatabaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //增加version 来删除之前的表信息
myDatabaseHelper = new MyDatabaseHelper(this,"peopleInfo.db",null,9);
//创建数据库
myDatabaseHelper.getWritableDatabase(); //打开数据库
SQLiteDatabase database = myDatabaseHelper.getWritableDatabase();
//新增zhangsan 18 11.11
ContentValues values = new ContentValues();
values.put("name","zhangsan");
values.put("age",18);
values.put("price",11.11);
database.insert("people",null,values); // database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"zhangsan","18","11.11"}); //新增lisi 28 22.22
values.clear();
values.put("name","lisi");
values.put("age",28);
values.put("price",22.22);
database.insert("people",null,values); // database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"lisi","28","22.22"}); //新增wangwu 48 44.44
values.clear();
values.put("name","wangwu");
values.put("age",48);
values.put("price",44.44);
database.insert("people",null,values); // database.execSQL("insert into people (name,age,price) values(?,?,?)",new String[] {"wangwu","48","44.44"}); //删除zhangsan信息
database.delete("people","name = ?",new String[] {"zhangsan"}); // database.execSQL("delete from people where name = ?",new String[] {"zhangsan"}); //更改lisi age=38
values.clear();
values.put("age",38);
database.update("people",values,"name = ?",new String[] {"lisi"}); // database.execSQL("update people set age = ? where name = ? ",new String[] {"38","lisi"}); //查询people表的内容并打印
Cursor cursor = database.query("people",null,null,null,null,null,null,null);
// Cursor cursor = database.rawQuery("select * from people",null);
if (cursor.moveToFirst()){
do{
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
double price = cursor.getDouble(cursor.getColumnIndex("price")); Log.d(TAG, "onCreate: "+name+" "+age+" "+price); }while (cursor.moveToNext()); }
cursor.close(); }
}

最终结果

05-28 10:00:11.618 16802-16802/? D/MainActivity: onCreate: lisi 38 22.22
05-28 10:00:11.618 16802-16802/? D/MainActivity: onCreate: wangwu 48 44.44

最新文章

  1. Java NIO6:选择器2---代码篇
  2. [CareerCup] 6.6 Toggle Lockers 切换锁的状态
  3. JDBC的一些基础提交语句回顾
  4. Shell脚本8种字符串截取方法总结
  5. BZOJ 4011 落忆枫音
  6. linux patch
  7. jQuery源码笔记——准备
  8. Models——英语学习小技巧之四
  9. Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍
  10. ar命令提取.a时刻,一个错误 is a fat file (use libtool(1) or lipo(1) and ar(1) on it)
  11. 201521123087《Java程序设计》第14周学习总结
  12. 前端入门19-JavaScript进阶之闭包
  13. THUWC2019:Reach out
  14. codeforces1107G Vasya and Maximum Profit 【模拟】
  15. Unity3D手机斗地主游戏开发实战(02)_叫地主功能实现
  16. Testlink解决大用例导入问题
  17. 剑指Offer 21. 栈的压入、弹出序列 (栈)
  18. Oracle自我补充之trunc()函数使用介绍
  19. Digispark红外接收器
  20. 20155305乔磊2016-2017-2《Java程序设计》第六周学习总结

热门文章

  1. Django升级1.8的一些问题
  2. JSON-RPC远程调用协议
  3. URI和URL的区别 【转】
  4. Ubuntu下vim中文乱码
  5. Maven Scope 依赖范围
  6. Scala学习笔记:重要语法特性
  7. SQL语句的CRUD
  8. PAT1107:Social Clusters
  9. 并发库应用之十 & 多线程数据交换Exchanger应用
  10. spring cloud中利用sidecar整合异构语言(转)