android 对sqlite数据库的增删改查

一、Android平台下数据库的一些概念

Sqlite是android平台的一款轻量级的、嵌入式的、关系型数据库产品,以下是一些主要概念。

1.Sqlite通过文件保存数据库,创建的数据库文件默认存在在/data/data//databases/的文件
夹下,一个文件就是一个数据库。

2.一个数据库包含多个表格,一个表格包含不同的字段,字段类型等等,这与SQL数据库相似。
3.Sqlite记录没有顺序的概念,不存在第一第二类的概念,通过查询获取满足条件的记录。

android平台下操作数据库的的相关类

(1.)SQLiteOpenHelper 抽象类,用于创建和管理数据库以及版本,需要创建一个子类继承,该类封装

了对数据库操作的基本方法,使用方便。

(2.)SQLiteDatabase 数据库访问了,主要是对数据库的增删改查等常用操作,功能比

SQLiteOpenHelper丰富,比如事务管理,分页等等。

(3.)Cursor游标类,主要用来返回返回查询记录结果

SQLiteOpenHelper 类使用方法比较少,网上介绍也比较多,本程序主要采用SQLiteDatabase类操作数

二、具体实例
1.DBSQLiteDao 类对数据库的增删改查进行封装
2.DBOpenHelper 继承自SQLiteOpenHelper,可在该类完成数据库表的创建


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by lenovo on 2016/3/16.
 */
public class DBSQLiteDao {
    private DBOpenHelper helper = null;
    public DBSQLiteDao(Context context){
        helper = new DBOpenHelper(context);
    }
    public boolean add(String table_name,ContentValues values){
        boolean flags = false;
        SQLiteDatabase database = null;
        long id = -1;
        try {
            database = helper.getWritableDatabase();
            id =database.insert(table_name,null,values);//表名
            flags = (id!=-1?true:false);
        }catch (Exception e){

        }finally {
            if(database!=null){
                database.close();
            }
        }
        return flags;
    }
    public boolean delete(String table_name,String whereClouse,String[]whereArgs){
        boolean flag = false;
        SQLiteDatabase database = null;
        int count =0;
        try {
            database = helper.getWritableDatabase();
            count = database.delete(table_name, whereClouse, whereArgs);
            flag = (count>0?true:false);
        }catch (Exception e){

        }finally {
            if(database!=null){
                database.close();
            }
        }
        return flag;
    }
    public boolean update(String table_name,ContentValues values,String whereClouse,String[]whereArgs){
        boolean flag = false;
        SQLiteDatabase database = null;
        int count =0;
        try{
            database = helper.getWritableDatabase();
            count = database.update(table_name, values, whereClouse, whereArgs);
            flag = (count>0?true:false);
        }catch (Exception e){

        }finally {
            if(database!=null){
                database.close();
            }
        }
        return flag;
    }
    //查询单条记录
    public Map<String,String> query(String table_name,String selection,String[]selectionArgs){
        SQLiteDatabase database = null;
        Cursor cursor = null;
        Map<String,String> map = new HashMap<String ,String>();
        try {
            database = helper.getReadableDatabase();
            //查询单条记录
            cursor = database.query(true, table_name, null, selection, selectionArgs, null, null, null, null);
            int cols_len = cursor.getColumnCount();//获取游标个数,即查询所获结果数目
            while (cursor.moveToNext()){
                for(int i=0;i<cols_len;i++){
                    String cols_name = cursor.getColumnName(i);
                    String cols_values = cursor.getString(cursor.getColumnIndex(cols_name));
                    if(cols_values==null){
                        cols_values = "";
                    }
                    map.put(cols_name,cols_values);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        finally {
            if(database!=null){
                database.close();
            }
        }
        return map;
    }
    public List<Map<String,String>> getMapList(String table_name,String selelction,String[]selectionArgs){
        SQLiteDatabase database = null;
        Cursor cursor = null;
        List<Map<String,String>>list = new ArrayList<>();
        try {
            database = helper.getReadableDatabase();
            cursor = database.query(false,table_name,null,selelction,selectionArgs,null,null,null,null);
            int cols_len = cursor.getColumnCount();
            while (cursor.moveToNext()){
                Map<String,String>map = new HashMap<String,String>();
                for(int i=0;i<cols_len;i++){
                    String cols_name = cursor.getColumnName(i);
                    String cols_values = cursor.getString(cursor.getColumnIndex(cols_name));
                    if(cols_values==null){
                        cols_values = "";
                    }
                    map.put(cols_name,cols_values);
                }
                list.add(map);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(database!=null){
                database.close();
            }
        }
        return list;

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

/**
 * Created by lenovo on 2016/3/16.
 */
public class DBOpenHelper extends SQLiteOpenHelper {
    private static String name ="SonicDatabase.db";
    private static int version =1;
    public DBOpenHelper(Context context) {
        super(context, name, null, version);
    }
//在这里我创建了三个表
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql_mobile_operation = "create table mobile_operation(id integer primary key autoincrement,name varchar(255),packagename varchar(255),info varchar)";
        db.execSQL(sql_mobile_operation);//完成数据库表的创建
        String sql_sonic_operation = "create table sonic_operation(id integer primary key autoincrement,name varchar(255),info varchar)";
        db.execSQL(sql_sonic_operation);
        String sql_connection = "create table connection(id integer primary key autoincrement,gesture_name varchar,record_name varchar(255))";
        db.execSQL(sql_connection);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值