概述
一、开发中使用数据库
1、创建数据库
android中提供了SQLiteOpenHelper这个类来帮助你管理数据库。包括创建和更新数据库。所以你只要继承SQLiteOpenHelper类来对数据库进行管理就行。
- public class DBHelper extends SQLiteOpenHelper {
- private static final String DATABASE_NAME = "test.db";
- 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 person(_id INTEGER PRIMARY KEY AUTOINCREMENT," +
- " name VARCHAR,age INTEGER, info TEXT)");//建表,对数据库进行操作等
-
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
- db.execSQL("ALTER TABLE person COLUMN other STRING");
- }
- }
SQLiteOpenHelper类的构造函数有四个参数
- public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) {
- this(context, name, factory, version, null);
- }
这是我在sdk源代码SQLiteOpenHelper类中复制的。context代表上下文,name是数据库名字,factory是游标工厂,一般情况下为null值,version是数据库版本,软件在今后的升级中会用到。在构造函数中就会创建数据库。
2、使用数据库
数据库已经创建好,通常我们通过getReadAbleDatabase()或getWriteableDatabase()方法来获取一个数据库实例。可以在onCreate()方法中对数据库进行操作。不过为了便于管理,还是建议大家重新写一个专门的工具类。
3、创建表
其实在onCreate()方法中就是在创建表。
- db.execSQL("CREATE TABLE IF NOT EXISTS person(_id INTEGER PRIMARY KEY AUTOINCREMENT," +
- " name VARCHAR,age INTEGER, info TEXT)
- ");//表名是person,_id是主键,为自增长,name是verchar型,age是integer型,info是text型。
4、表操作
表的操作就是增删改查,android中提供了两种方法(就我知道的)。分别是sql语句和封装好的insert(),delete(),update(),query()。后边的这些方法也是对sql语句的封装。
(1)增
- db.execSQL("insert into ....");
还有就是
- ContentValues cv = new ContentValues();
- cv.put();
- db.insert("tableName",getNullColunmHack(),cv);
函数原型是insert(String table, String nullColumnHack, ContentValues values),其实insert()的底层也是execSQL()。
(2)删
和添加的操作差不多。db.execSQL()和db.delete()
(3)改
和上边两个操作的也是相同的。
(4)查
因为查询的结果是返回一个游标(Cursor)。rawQuery(String sql, String[] selectionArgs)。通过移动游标来进行数据的查询。
- 1 Cursor c = db.rawQuery("SELECT * FROM person", null);
- 2 while(c.moveToNext()){
- 3 Person p = new Person();
- 4 p.set_id(c.getInt(c.getColumnIndex("_id")));
- 5 p.setName(c.getString(c.getColumnIndex("name")));
- 6 p.setAge(c.getInt(c.getColumnIndex("age")));
- 7 p.setInfo(c.getString(c.getColumnIndex("info")));
- 8 persons.add(p);
- 9 }
- 10 c.close();
二、源代码
activity.java
- 1 package com.sqlitedemo.activity;
- 2
- 3 import android.app.Activity;
- 4 import android.os.Bundle;
- 5 import android.view.View;
- 6 import android.widget.Button;
- 7 import android.widget.ListView;
- 8 import android.widget.SimpleAdapter;
- 9 import android.widget.Toast;
- 10
- 11 import com.tiancz.sqlitedemo.R;
- 12 import com.tiancz.sqlitedemo.com.tiancz.sqlitedemo.activity00_entity.DBManager;
- 13 import com.tiancz.sqlitedemo.com.tiancz.sqlitedemo.activity00_entity.Person;
- 14
- 15 import java.util.ArrayList;
- 16 import java.util.HashMap;
- 17 import java.util.List;
- 18 import java.util.Map;
- 19
- 20 /**
- 21 * Created by tiancz on 2015/3/7.
- 22 */
- 23 public class activity00 extends Activity {
- 24
- 25 private DBManager dm;
- 26 private ListView lv;
- 27
- 28 private Button add;
- 29 private Button query;
- 30 private Button update;
- 31 private Button delete;
- 32 private Button drop;
- 33 @Override
- 34 protected void onCreate(Bundle savedInstanceState) {
- 35 super.onCreate(savedInstanceState);
- 36 setContentView(R.layout.activity00);
- 37
- 38 lv = (ListView)findViewById(R.id.lv_00);
- 39 query = (Button)findViewById(R.id.query00);
- 40 add = (Button)findViewById(R.id.add00);
- 41 update = (Button)findViewById(R.id.update00);
- 42 delete = (Button)findViewById(R.id.deleteAll00);
- 43 drop = (Button)findViewById(R.id.drop00);
- 44
- 45 dm = new DBManager(this);
- 46
- 47 add.setOnClickListener(new View.OnClickListener() {
- 48 @Override
- 49 public void onClick(View v) {
- 50 add(v);
- 51 }
- 52 });
- 53
- 54 query.setOnClickListener(new View.OnClickListener() {
- 55 @Override
- 56 public void onClick(View v) {
- 57 query(v);
- 58 }
- 59 });
- 60
- 61 update.setOnClickListener(new View.OnClickListener() {
- 62 @Override
- 63 public void onClick(View v) {
- 64 update(v);
- 65 }
- 66 });
- 67
- 68 delete.setOnClickListener(new View.OnClickListener() {
- 69 @Override
- 70 public void onClick(View v) {
- 71 deleteALL(v);
- 72 }
- 73 });
- 74
- 75 // drop.setOnClickListener(new View.OnClickListener() {
- 76 // @Override
- 77 // public void onClick(View v) {
- 78 // dropTable(v);
- 79 // }
- 80 // });
- 81 }
- 82
- 83
- 84 @Override
- 85 protected void onDestroy(){
- 86 super.onDestroy();
- 87 dm.closeDB();
- 88 }
- 89
- 90 public void add(View view){
- 91 List<Person> persons = new ArrayList<>();
- 92 Person p1 = new Person("tom",21,"lively boy");
- 93 Person p2 = new Person("bill",23,"handsome");
- 94 Person p3 = new Person("gate",22,"sexy boy");
- 95 Person p4 = new Person("joe",24,"hot boy");
- 96 Person p5 = new Person("jhon",29,"pretty");
- 97
- 98 persons.add(p1);
- 99 persons.add(p2);
- 100 persons.add(p3);
- 101 persons.add(p4);
- 102 persons.add(p5);
- 103
- 104 dm.add(persons);
- 105 }
- 106 public void update(View view){
- 107 Person p = new Person();
- 108 p.setName("jhon");
- 109 p.setAge(40);
- 110 dm.updateAge(p);
- 111 }
- 112
- 113 public void deleteALL(View view){
- 114 dm.delete();
- 115 }
- 116
- 117 public void delete(View view){
- 118 Person p = new Person();
- 119 p.setAge(30);
- 120 dm.deleteOldPerson(p);
- 121 }
- 122
- 123 // public void dropTable(View view){
- 124 // dm.dropTable();
- 125 // }
- 126
- 127 public void query(View view){
- 128 List<Person>persons = dm.findAllPerson();
- 129 ArrayList<Map<String,String>> list = new ArrayList<>();
- 130 for (Person p:persons){
- 131 HashMap<String,String>map = new HashMap<>();
- 132 map.put("name",p.getName());
- 133 map.put("info","No."+p.get_id()+" "+p.getAge()+" years old,"+p.getInfo());
- 134 list.add(map);
- 135 }
- 136 SimpleAdapter adapter = new SimpleAdapter(this,list,android.R.layout.simple_list_item_2,
- 137 new String[]{"name","info"},new int[]{android.R.id.text1,android.R.id.text2});
- 138 lv.setAdapter(adapter);
- 139 if(list.isEmpty()){
- 140 Toast.makeText(this,"列表里还没人呢",Toast.LENGTH_SHORT).show();
- 141 }
- 142 }
- 143 }
activity.xml
- 1 <?xml version="1.0" encoding="utf-8"?>
- 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- 3 android:layout_width="match_parent"
- 4 android:layout_height="match_parent"
- 5 android:orientation="vertical">
- 6
- 7 <Button
- 8 android:id="@+id/add00"
- 9 android:layout_width="wrap_content"
- 10 android:layout_height="wrap_content"
- 11 android:text="Add"/>
- 12 <Button
- 13 android:id="@+id/update00"
- 14 android:layout_width="wrap_content"
- 15 android:layout_height="wrap_content"
- 16 android:text="update"/>
- 17 <Button
- 18 android:id="@+id/deleteAll00"
- 19 android:layout_width="wrap_content"
- 20 android:layout_height="wrap_content"
- 21 android:text="deleteAll"/>
- 22 <Button
- 23 android:id="@+id/delete00"
- 24 android:layout_width="wrap_content"
- 25 android:layout_height="wrap_content"
- 26 android:text="delete"/>
- 27 <Button
- 28 android:id="@+id/drop00"
- 29 android:layout_width="wrap_content"
- 30 android:layout_height="wrap_content"
- 31 android:text="drop"/>
- 32 <Button
- 33 android:id="@+id/query00"
- 34 android:layout_width="wrap_content"
- 35 android:layout_height="wrap_content"
- 36 android:text="query"/>
- 37
- 38 <ListView
- 39 android:id="@+id/lv_00"
- 40 android:layout_width="fill_parent"
- 41 android:layout_height="wrap_content">
- 42 </ListView>
- 43 </LinearLayout>
DBHelper.java
- 1 package com.tiancz.sqlitedemo.com.tiancz.sqlitedemo.activity00_entity;
- 2
- 3 import android.content.Context;
- 4 import android.database.sqlite.SQLiteDatabase;
- 5 import android.database.sqlite.SQLiteOpenHelper;
- 6
- 7 /**
- 8 * Created by tiancz on 2015/3/8.
- 9 */
- 10 public class DBHelper extends SQLiteOpenHelper {
- 11 private static final String DATABASE_NAME = "test.db";
- 12 private static final int DATABASE_VERSION = 1;
- 13 public DBHelper(Context context){
- 14 super(context,DATABASE_NAME,null,DATABASE_VERSION);
- 15 }
- 16
- 17 @Override
- 18 public void onCreate(SQLiteDatabase db){
- 19 db.execSQL("CREATE TABLE IF NOT EXISTS person(_id INTEGER PRIMARY KEY AUTOINCREMENT," +
- 20 " name VARCHAR,age INTEGER, info TEXT)");
- 21
- 22 }
- 23
- 24 @Override
- 25 public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
- 26 db.execSQL("ALTER TABLE person COLUMN other STRING");
- 27 }
- 28 }
三、效果
四、总结
刚开始做的时候忘了实例化DBManager,所以导致无法对数据库进行操作,一直显示的空指针异常,看了好久才发现忘了这一句
- dm = new DBManager(this);
对于信息越来越多,数据库的使用越发显得重要。学习android,数据库的学习必不可少。
由于本人初写博客,写的不好的地方还请大家能批评指正,希望能和大家相互学习、相互交流、共同成长。
最后
以上就是无聊音响为你收集整理的android开发中的数据库SQLite的使用的全部内容,希望文章能够帮你解决android开发中的数据库SQLite的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复