SQLite是android已经封装好的数据库,只需要简单的代码就可以实现增删改查。用来做android简易的数据库非常方便,下面简单的介绍下其实现:

首选需要创建数据库,使用SQLiteOpenHelper来实现创建和更新版本

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;import com.linqinen.mho.bean.NormalMaterialPrice;import java.util.List;
public class SQlite extends SQLiteOpenHelper {private final String TAG = "SQlite ";public static final String TABLE_NAME = "rank";public static int version = 1;List<NormalMaterialPrice> mListCache;public SQlite(Context context, String name, CursorFactory factory,int version) {super(context, TABLE_NAME+".db"/*数据库名*/, null/*factory 一般不用*/, version);}public SQlite(Context context,List<NormalMaterialPrice> mListCache){super(context, TABLE_NAME+".db", null/*factory 一般不用*/, version);this.mListCache = mListCache;}//onCreate用来创建数据库@Overridepublic void onCreate(SQLiteDatabase db) {//当调用了getReadableDataBase或者getWritealbeDatabase函数就会创建数据库db.execSQL("create table " + TABLE_NAME + "(_id integer primary key autoincrement , name text , num integer , price integer , isRefresh integer)");/**///参数1.表名//参数2.指定是否可以为空(尽量不要为空)//参数3.要保存的数据//key是字段的名字,必须和建表时字段相同for (int i = 0; i < mListCache.size(); i++) {ContentValues contentValuses = new ContentValues();contentValuses.put("name", mListCache.get(i).getName());contentValuses.put("num", mListCache.get(i).getNum());contentValuses.put("price", mListCache.get(i).getPrice());contentValuses.put("isRefresh", mListCache.get(i).getIsRefresh());db.insert(SQlite.TABLE_NAME, "name", contentValuses);}}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}

之后创建一个自定义的类,实现增删改查等方法

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;import com.linqinen.mho.bean.NormalMaterialPrice;import java.util.ArrayList;
import java.util.List;//数据库的增删改查
public class RankDBhelper{private final String TAG = "RankDBhelper";private List<NormalMaterialPrice> mListCache;private SQlite sqlite;private SQLiteDatabase dataBase;public RankDBhelper(Context context,List<NormalMaterialPrice> mListCache){this.mListCache = mListCache;if (sqlite == null) {sqlite = new SQlite(context,mListCache);}dataBase = sqlite.getWritableDatabase();}public void closeSQLiteDatabase(){if (dataBase.isOpen()) {dataBase.close();}}public Cursor cursorQuery(){String querySql = "select * from " + SQlite.TABLE_NAME;return dataBase.rawQuery(querySql, null);}public void onlyQueryAllData(){//cursor游标(迭代器)方法的各个参数意义:1.表名 2.列名 3和4.需要查询的条件                          5和6.其他条件   7排序的方式Cursor cursor = dataBase.query(SQlite.TABLE_NAME,null,null,null,null,null,null);while (cursor.moveToNext()) {NormalMaterialPrice mBean = new NormalMaterialPrice();mBean.setName(cursor.getString(cursor.getColumnIndex("name")));mBean.setNum(cursor.getString(cursor.getColumnIndex("num")));mBean.setPrice(cursor.getString(cursor.getColumnIndex("price")));mBean.setIsRefresh(cursor.getInt(cursor.getColumnIndex("isRefresh")));mListCache.add(mBean);}
//每次游标cursor用完后都需要关闭,否则会报异常cursor.close();}//查询并更新数据public void updateData(String oldName,String newName , String num , String price){ContentValues contentValues = new ContentValues();contentValues.put("name", newName);contentValues.put("num", num);contentValues.put("price", price);contentValues.put("isRefresh", 1);dataBase.update(SQlite.TABLE_NAME, contentValues, "name=?", new String[]{oldName});}/**删除数据库条目*/public void deleteData(String oldName){dataBase.delete(SQlite.TABLE_NAME,  "name=?", new String[]{oldName});}//清空数据库存档public void resetData(){dataBase.delete(SQlite.TABLE_NAME, null, null);}/**增加单条数据库条目*/public void addData(String name , String num , String price){ContentValues contentValues = new ContentValues();contentValues.put("name", name);contentValues.put("num", num);contentValues.put("price", price);contentValues.put("isRefresh", 1);dataBase.insert(SQlite.TABLE_NAME, "name", contentValues);}/**增加所有数据库条目*/public void addAllData(){for (int i = 0; i < mListCache.size(); i++) {ContentValues contentValues = new ContentValues();contentValues.put("name", mListCache.get(i).getName());contentValues.put("num", mListCache.get(i).getNum());contentValues.put("price", mListCache.get(i).getPrice());contentValues.put("isRefresh", mListCache.get(i).getIsRefresh());dataBase.insert(SQlite.TABLE_NAME, "name", contentValues);}}}

到此数据库搭建完成,下面看看如何使用:

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;import butterknife.BindView;
import butterknife.ButterKnife;public class MainActivity extends AppCompatActivity {@BindView(R.id.recyclerView)android.support.v7.widget.RecyclerView mRecyclerView;public RankDBhelper mDBhelper;private String name = "全部";private NormalMaterialPriceListAdapter mAdapter;public List<NormalMaterialPrice> mListCache = new ArrayList<>();private List<NormalMaterialPrice> mList = new ArrayList<>();private Context mContext;public static final int ADD_ITEM = 0, DELETE_ALL_DATA = 1, FILTRATE_BE_MODIFIED_DATA = 2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);setSupportActionBar(toolbar);mContext = this;initData();}/**每次activity,onDestroy的时候,务必关闭数据库,否则容易报异常*/@Overridepublic void onDestroy() {super.onDestroy();mDBhelper.closeSQLiteDatabase();}/**初始化数据库*/private void initData() {mDBhelper = new RankDBhelper(mContext, mListCache);mDBhelper.onlyQueryAllData();if (mListCache.size() < 1) {addRecyclerViewData();mDBhelper.addAllData();}initFirstSpinner();initRecyclerView();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_normal_material_price, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {setOnOptionsItemSelected(item.getItemId());return super.onOptionsItemSelected(item);}public void setOnOptionsItemSelected(int selecte) {if (mAdapter != null) {switch (selecte) {case R.id.addItem:LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View view = inflater.inflate(R.layout.inflate_addsqlitedata_normal_material_price, null);final EditText mEtName = (EditText) view.findViewById(R.id.et_name);final EditText mEtNum = (EditText) view.findViewById(R.id.et_num);final EditText mEtMinPrice = (EditText) view.findViewById(R.id.et_minPrice);final EditText mEtMaxPrice = (EditText) view.findViewById(R.id.et_maxPrice);new AlertDialog.Builder(mContext).setView(view).setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {mDBhelper.addData(mEtName.getText().toString(), mEtNum.getText().toString(), mEtMinPrice.getText().toString() + "--" + mEtMaxPrice.getText().toString());mListCache.add(new NormalMaterialPrice(mEtName.getText().toString(),mEtNum.getText().toString(), mEtMinPrice.getText().toString() + "--" + mEtMaxPrice.getText().toString(),1));mList.clear();mList.addAll(mListCache);mAdapter.notifyDataSetChanged();}}).setNegativeButton("取消", null).show();break;case R.id.deleteAllData:new AlertDialog.Builder(mContext).setTitle("温馨提示").setMessage("是否删除所有数据库信息").setPositiveButton("删除", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {mDBhelper.resetData();mList.clear();mListCache.clear();addRecyclerViewData();mList.addAll(mListCache);mAdapter.notifyDataSetChanged();}}).setNegativeButton("取消", null).show();break;case R.id.filtrateBeModifiedData:mList.clear();for (int i = 0; i < mListCache.size(); i++) {if (mListCache.get(i).getIsRefresh() == 1) {mList.add(mListCache.get(i));}}mAdapter.notifyDataSetChanged();break;default:break;}}}private void initRecyclerView() {mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext));mAdapter = new NormalMaterialPriceListAdapter(mContext, mList);mRecyclerView.setAdapter(mAdapter);mAdapter.setOnItemLongClickListener(new MyRecyclerViewAdapter.OnItemLongClickListener() {@Overridepublic void onItemLongClick(View view2, int position) {LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View view = inflater.inflate(R.layout.inflate_addsqlitedata_normal_material_price, null);final EditText mEtName = (EditText) view.findViewById(R.id.et_name);final EditText mEtNum = (EditText) view.findViewById(R.id.et_num);final EditText mEtMinPrice = (EditText) view.findViewById(R.id.et_minPrice);final EditText mEtMaxPrice = (EditText) view.findViewById(R.id.et_maxPrice);final NormalMaterialPrice mNormalMaterialPrice = mList.get(position);mEtName.setText(mNormalMaterialPrice.getName());mEtNum.setText(mNormalMaterialPrice.getNum());String price[] = mNormalMaterialPrice.getPrice().split("--");if (price.length > 0) {mEtMinPrice.setText(price[0]);}if (price.length > 1) {mEtMaxPrice.setText(price[1]);}new AlertDialog.Builder(mContext).setView(view).setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {mDBhelper.updateData(mNormalMaterialPrice.getName(), mEtName.getText().toString(), mEtNum.getText().toString(), mEtMinPrice.getText().toString() + "--" + mEtMaxPrice.getText().toString());mList.clear();mListCache.clear();mDBhelper.onlyQueryAllData();if (!name.equals("全部")) {reInitRecyclerViewNameData(name);} else {mList.addAll(mListCache);mAdapter.notifyDataSetChanged();}
//                                mAdapter.notifyItemChanged(position);}}).setNeutralButton("删除", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {mDBhelper.deleteData(mNormalMaterialPrice.getName());mList.clear();mListCache.clear();mDBhelper.onlyQueryAllData();mList.addAll(mListCache);mAdapter.notifyDataSetChanged();}}).setNegativeButton("取消", null).show();}});}private void initFirstSpinner() {Spinner spinner = (Spinner) findViewById(R.id.spinner_first);final List<String> list = new ArrayList<>();for (int i = 0; i < mListCache.size(); i++) {list.add(mListCache.get(i).getName());}/**java中的中文排序逻辑*/Collator coll = Collator.getInstance(Locale.CHINESE);Collections.sort(list, coll);list.add(0, "全部");//android.R.layout.simple_spinner_item为系统默认样式ArrayAdapter<String> adapter = new ArrayAdapter<>(mContext, android.R.layout.simple_spinner_item, list);adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);spinner.setAdapter(adapter);spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {name = list.get(position).substring(2);if (position == 0) {mList.clear();mList.addAll(mListCache);mAdapter.notifyDataSetChanged();} else {reInitRecyclerViewNameData(name);}}@Overridepublic void onNothingSelected(AdapterView<?> adapterView) {}});}public void reInitRecyclerViewNameData(String name) {mList.clear();for (int i = 0; i < mListCache.size(); i++) {if (mListCache.get(i).getName().contains(name)) {mList.add(mListCache.get(i));}}mAdapter.notifyDataSetChanged();}private void addRecyclerViewData() {mListCache.add(new NormalMaterialPrice("土蜂幼虫","1", "98--198", 0));mListCache.add(new NormalMaterialPrice("杀人蜂幼虫","1", "98--222", 0));mListCache.add(new NormalMaterialPrice("山青虫","1", "99--133", 0));mListCache.add(new NormalMaterialPrice("蓝闪蝶","1", "520--655", 0));}}

Demo下载地址https://github.com/linqinen708/SQLite.git

这个是之前看到的SQlite写的非常详细的文章,大家可以参考下,非常推荐 http://blog.csdn.net/codeeer/article/details/30237597/

SQLite数据库的简单介绍相关推荐

  1. Mysql数据库的简单介绍

    在当今的大数据时代,数据库已成为必不可少的数据工具.什么是数据库呢,数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. MYSQL是目前最为流行的关系型数据库系统,关系型数据库系统 ...

  2. SQLite数据库的简单读写操作

    安卓系统自带SQLite数据库,SDK中对SQLite的操作由SQLiteDatabase完成,涉及到的类有如下几个: 1.SQLiteDatabase:代表数据库本身,支持对数据的标准SQL操作 2 ...

  3. mysql数据库简单介绍_数据库的简单介绍

    关系型数据库与非关系型数据库 关系型数据库:mysql /oracle/sql server/sqlite 优点: 1.易于维护:都是使用表结构,格式一致: 2.使用方便:sql语言通用,可用于复杂查 ...

  4. SQL SERVER数据库的简单介绍

    一.数据库技术的发展 数据库技术是应数据管理任务的需求而产生的,先后经历了人工管理.文件系统.数据库系统等三个阶段. 二.关系型数据库 SQL Server属于关系型数据库. 关系模型 以二维表来描述 ...

  5. 数据库存储过程简单介绍

    存储过程 存储过程就是一条或多条SQL语句的集合 当对数据库进行一系列的操作时 存储过程就可以将这些复杂的操作封装成一个代码块 以便重复使用 大大减少了数据库开发人员的工作量 创建存储过程 创建存储过 ...

  6. DB2数据库的简单介绍和用法,编程序技巧

    DB2是IBM一种分布式数据库解决方案.说简单点:DB2就是IBM开发的一种大型关系型数据库平台.它支持多用户或应用程序在同一条SQL 语句中查询不同database甚至不同DBMS中的数据.目前,D ...

  7. android微信数据库密码,android微信sqlite数据库密码简单获得获得

    前几天就要发表这篇文章,看雪论坛一直不能注册,提示后台维护中... 就发布到另外一个论坛 今天注册成功,复制过来作为我的第一片分析. 以后我将在不同的论坛发表不同的内容 下面的内容你只需复制出来即可由 ...

  8. CDD诊断数据库的简单介绍

    1. 什么是数据库? 数据库是以结构化方式组织的一个数据集合. 比如DBC数据库: Network nodes Display Rx Messages EngineState(0x123) 通过结构化 ...

  9. b 数据库大全简单介绍

    –> go to 总目录 数据库大全 排行 分类表 细致分类 1. Relational DBMS 2. key-value stores 3. Document stores 4. Time ...

最新文章

  1. oracle启用归档日志
  2. 新媒体学python有用吗_你真的不学Python吗?学习Python的四大理由!
  3. 将一个对象拆开拼接成URL
  4. MATLAB读取和写入Excel文件
  5. dfs深度优先搜索_图的深度优先搜索(DFS)
  6. VXLAN详解(一)
  7. redis 系列16 持久化 RDB
  8. jedate change事件监控,使用jedate无法使用change事件
  9. 一个检测PC机软硬件系统信息的工具——EVEREST
  10. Dreamweaver CS4自学实例视频教程(高清)
  11. 如何粘贴winedit编辑器console中的错误文本信息
  12. 机器阅读理解之开山鼻祖Teaching Machines to Read and Comprehend
  13. 事件抽取(event extraction)
  14. 西瓜测试软件,西瓜视频v2.0.0
  15. 华为服务器进入系统怎么退出安全模式,华为手机怎么进入和退出安全模式?华为手机进入安全模式按哪个键...
  16. mac上好用的文档转换器Doxillion Plus
  17. 【博学谷学习记录】超强总结,用心分享 | 狂野大数据 | 环境 | hive搭建
  18. 在虚拟机中安装mysql数据库
  19. 【物联网服务NodeJs-5天学习】第三天实战篇③ ——基于MQTT的环境温度检测
  20. 还没理解微前端?手把手教你实现一个迷你版

热门文章

  1. crmeb单商户pro1.5一键换色
  2. 电脑音箱怎么会出现电流声?
  3. 删除某个文件或文件夹时,系统提示无法删除!
  4. 2015年第十三周杭电:献给杭电五十周年的礼物
  5. mysql nginx
  6. Alan Kay——面向对象之父:预测未来,创造未来
  7. mysql数据库inner join_inner join用法是什么
  8. JS混淆解密技术研究与案例分析
  9. 计算机无法失眠,Win7、Vista 失眠了:无法休眠之故障解决
  10. 论证是一门学问 如何让你的观点有说服力-2 规则2 理顺你的思路