二十一、SQLite简单使用

SQLite作为轻量级的数据库,在移动终端上用来保存本地数据非常便利,下面用一个例子来简单介绍一下SQLite的使用,涉及到数据库的创建、添加、更新、删除、查找、遍历等基本操作。
自定义了一个MySqliteOpenHelper类,继承SQLiteOpenHelper,该类用来创建数据库,创建一个包含id,username,password,age的userinfo表,MySqliteOpenHelper.java代码如下:

package com.example.sqliteexample;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MySqliteOpenHelper extends SQLiteOpenHelper{

    //数据库名:
    private static final String DBNAME="sqlitetest.db";
    //表名
    private static final String USERINFO="userinfo";

    private static final int TESTVERSION=1;
                
    public MySqliteOpenHelper(Context context) {
        super(context, DBNAME, null, TESTVERSION);
        // TODO Auto-generated constructor stub
    }

    //初始化,创建表
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        String sql1="create table "+USERINFO+"(id integer primary key autoincrement,"
                + "username varchar(20), password varchar(20), age integer)";
        db.execSQL(sql1);
    }
    //失败后删除,重新创建
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
           if(newVersion>oldVersion)
           {
               String sql1="drop table if exists"+USERINFO;
               db.execSQL(sql1);
               this.onCreate(db);
           }
    }
}

在MainActivity中实现对数据库的操作,Java代码如下:

package com.example.sqliteexample;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {

    SQLiteOpenHelper helper;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        helper = new MySqliteOpenHelper(this);
        for (int i=1;i<=10;i++)
        {
            String name = "user"+i;
            String passwd = "passwd"+i;
            int ages = i;
            insertUser(name,passwd,ages);
            //deleteUser(name);
            //updateUser(name,ages+5);
        }
        this.showAllUser();
        //this.deleteAllUser();
    }
    
    public void insertUser(String userName,String passWord,int age)
    {
        SQLiteDatabase sdb = helper.getReadableDatabase();
        String sql="insert into userinfo(username,password,age) values(?,?,?)";
        Object obj[]={userName,passWord,age};
        sdb.execSQL(sql, obj);
        sdb.close();
        return;
    }
    
    public void deleteUser(String userName)
    {
        SQLiteDatabase sdb = helper.getReadableDatabase();
        String sql="delete from userinfo where username=?";
        Object obj[]={userName};
        sdb.execSQL(sql,obj);
        sdb.close();
        return;
    }
    
    public void deleteAllUser()
    {
        SQLiteDatabase sdb = helper.getReadableDatabase();
        String sql = "delete from userinfo";
        Object obj[]={};
        sdb.execSQL(sql,obj);
        sdb.close();
        return;
    }
    
    public void updateUser(String userName, int age)
    {
        SQLiteDatabase sdb = helper.getReadableDatabase();
        String sql="update userinfo set age=? where username=?";
        Object obj[]={age,userName};
        sdb.execSQL(sql,obj);
        sdb.close();
        return;
    }
    
    public void showUser(String userName)
    {
        SQLiteDatabase sdb = helper.getReadableDatabase();
        String sql="select * from userinfo where username=?";
        Cursor cursor = sdb.rawQuery(sql, new String[] {userName});
        if(cursor.moveToFirst()==false)
        {
            cursor.close();
            return;
        }
        // 创建一个List集合,List集合的元素是Map
        List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
        Map<String, Object> listHead = new HashMap<String, Object>();
        listHead.put("id","id");
        listHead.put("username","username");
        listHead.put("password","password");
        listHead.put("age","age");
        listItems.add(listHead);
        while (cursor.moveToNext())
        {
            Map<String, Object> listItem = new HashMap<String, Object>();
            listItem.put("id", cursor.getInt(0));   //用到int转换为string方法
            listItem.put("username", cursor.getString(1));
            listItem.put("password", cursor.getString(2));
            listItem.put("age", cursor.getInt(3));
            listItems.add(listItem);
        }
        
        // 创建一个SimpleAdapter
        SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,
                R.layout.useritem,
                new String[] {"id", "username", "password", "age"},
                new int[] {R.id.userId, R.id.userName, R.id.passWord, R.id.age});
        ListView list = (ListView) findViewById(R.id.userList);
        // 为ListView设置Adapter
        list.setAdapter(simpleAdapter);
        sdb.close();
        return;
    }
    
    public void showAllUser()
    {
        SQLiteDatabase sdb = helper.getReadableDatabase();
        String sql="select * from userinfo";
        Cursor cursor = sdb.rawQuery(sql, new String[] {});
        
        // 创建一个List集合,List集合的元素是Map
        List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
        Map<String, Object> listHead = new HashMap<String, Object>();
        listHead.put("id","id");
        listHead.put("username","username");
        listHead.put("password","password");
        listHead.put("age","age");
        listItems.add(listHead);
        while (cursor.moveToNext())
        {
            Map<String, Object> listItem = new HashMap<String, Object>();
            listItem.put("id", cursor.getInt(0));   //用到int转换为string方法
            listItem.put("username", cursor.getString(1));
            listItem.put("password", cursor.getString(2));
            listItem.put("age", cursor.getInt(3));
            listItems.add(listItem);
        }
        
        // 创建一个SimpleAdapter
        SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,
                R.layout.useritem,
                new String[] {"id", "username", "password", "age"},
                new int[] {R.id.userId, R.id.userName, R.id.passWord, R.id.age});
        ListView list = (ListView) findViewById(R.id.userList);
        // 为ListView设置Adapter
        list.setAdapter(simpleAdapter);
        
        sdb.close();
        return;
    }
}
    原文作者:zzjieee
    原文地址: https://www.jianshu.com/p/95f006d900b1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞