本篇整合Android使用数据库,要保存一个实体类的样本。

首先看一下数据库语句:

ORM:关系对象映射

添加数据:

 ContentValues values = new ContentValues();
values.put("name", "小丽");
values.put("phone", "110");
mDB.insert("student",//表名
null, //规避插入语句的错误
values );//插入的值

删除数据:

mDB.delete("student", //表名
"name =?",//条件语句
new String[]{"小丽"});//条件语句的占位符

改动数据:

 ContentValues values = new ContentValues();
values.put("phone", "10086");
mDB.update("student",//表名
values, //要改动的值
"name =?",//条件语句
new String[]{"小丽"});

查询数据:

 Cursor cursor = mDB.query("student",//表名
null,//查询的字段
null,//条件语句
null,//条件语句的占位符
null,//分组语句
null,//分组条件
null);//排序
boolean toFirst = cursor.moveToFirst();
while(toFirst){
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
MyData myData = new MyData(name, phone);
dataList.add(myData);
toFirst = cursor.moveToNext();
}

以下是数据库创建及使用步骤

1、方法调用

private DBMang_Order dbMang_Order; dbMang_Order=DBMang_Order.getInstance(getApplicationContext());

//查询
ArrayList<OrderUncheck> uncheckList = dbMang_Order.query();
//删除
dbMang_Order.delete(orderNo);
//添加
dbMang_Order.insert(new OrderUncheck(orderNo, account, action));
//改动
dbMang_Order.update(new OrderUncheck(orderNo, account, action));

2、首先创建要存储的实体类

public class OrderUncheck {

    String orderNo;
double account;
int action;
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public double getAccount() {
return account;
}
public void setAccount(double account) {
this.account = account;
}
public int getAction() {
return action;
}
public void setAction(int action) {
this.action = action;
}
public OrderUncheck(String orderNo, double account, int action) {
super();
this.orderNo = orderNo;
this.account = account;
this.action = action;
}
}

3、创建数据库

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; public class MySQL_Order extends SQLiteOpenHelper { private static final String name = "count"; //数据库名称
private static final int version = 1; //数据库版本号
//第三个參数CursorFactory指定在运行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类 public MySQL_Order(Context context) {
super(context, name, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql="CREATE TABLE neworder (_id INTEGER PRIMARY KEY AUTOINCREMENT,orderNo VARCHAR(200),account VARCHAR(19100),action VARCHAR(200))";
db.execSQL(sql);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub }
}

4、代码中被调用的方法在这个类:增删改查

public class DBMang_Order {
private static DBMang_Order mDbManager=new DBMang_Order();
private static SQLiteDatabase mDb;
private static Context context;
private DBMang_Order() { }
public static synchronized DBMang_Order getInstance(Context context){
DBMang_Order.context = context;
if(mDb==null){
MySQL_Order mySQL = new MySQL_Order(context);
mDb = mySQL.getWritableDatabase();
}
return mDbManager;
}
interface NewTable{
String TABLE_NAME="neworder";
String TABLE_COLUMN_orderNo="orderNo";
String TABLE_COLUMN_account="account";
String TABLE_COLUMN_action="action";
}
//增
public void insert(OrderUncheck info){
ContentValues values=new ContentValues();
values.put(NewTable.TABLE_COLUMN_orderNo, info.getOrderNo());
values.put(NewTable.TABLE_COLUMN_account, info.getAccount());
values.put(NewTable.TABLE_COLUMN_action, info.getAction());
Log.w("mDb.insert", ""+info);
Log.w("mDb.insert",""+ values);
mDb.insert(NewTable.TABLE_NAME, null, values);
}
//删
public void delete(String orderNo) {
Log.w("delete", orderNo);
mDb.delete(NewTable.TABLE_NAME, NewTable.TABLE_COLUMN_orderNo+"=?", new String[]{orderNo});
}
//改
public void update(OrderUncheck info){
ContentValues values = new ContentValues();
values.put(NewTable.TABLE_COLUMN_account, info.getAccount());
mDb.update(NewTable.TABLE_NAME, values, NewTable.TABLE_COLUMN_orderNo+"=? and "+NewTable.TABLE_COLUMN_orderNo+"=? ", new String[]{String.valueOf(info.getOrderNo()),""+info.getAccount()});
}
//查
public ArrayList<OrderUncheck> query(){ Cursor cursor = mDb.query(NewTable.TABLE_NAME, null, null, null, null, null, null);
ArrayList<OrderUncheck> list=new ArrayList<OrderUncheck>();
boolean toFirst = cursor.moveToFirst();
while (toFirst) {
String orderNo = cursor.getString(cursor.getColumnIndex(NewTable.TABLE_COLUMN_orderNo));
String account = cursor.getString(cursor.getColumnIndex(NewTable.TABLE_COLUMN_account));
String action = cursor.getString(cursor.getColumnIndex(NewTable.TABLE_COLUMN_account));
double accountd = Double.parseDouble(account);
int actiond=Integer.parseInt(action);
OrderUncheck order = new OrderUncheck(orderNo, accountd,actiond);
list.add(order);
toFirst=cursor.moveToNext();
}
cursor.close();
return list; }
}

很多其它交流可加Android技术讨论群:71262831

版权声明:本文博主原创文章,博客,未经同意不得转载。

Android数据存储——SQLite数据库(模板)的更多相关文章

  1. 【Android 应用开发】Android 数据存储 之 SQLite数据库详解

    . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...

  2. Android 数据存储 之 SQLite数据库详解

    . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...

  3. Android数据存储之SQLite数据库

    Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...

  4. Android数据存储之SQLCipher数据库加密

    前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...

  5. Android版本升级同时Sqlite数据库的升级及之前数据的保留

    http://www.cnblogs.com/wang340/archive/2013/05/06/3063135.html http://www.eoeandroid.com/forum.php?m ...

  6. Android - 数据存储 -在SQL数据库中保存数据

    对于重复的或结构化的数据,保存到数据库中是很好的选择,比如联系人信息.这里假设你对SQL数据库大体上了解然后帮助你学习Android上的SQLite数据库.在Android数据库上需要用到的API可以 ...

  7. Android数据存储:SQLite

    Android数据存储之SQLite SQLite:Android提供的一个标准的数据库,支持SQL语句.用来处理数据量较大的数据.△ SQLite特征:1.轻量性2.独立性3.隔离性4.跨平台性5. ...

  8. Android 数据存储03之SQLite

    SQLite数据存储 Android 集成了 SQLite 数据库.它存储在 /data/data/< 项目文件夹 >/databases/ 下.Android 开发中使用 SQLite ...

  9. Android数据存储之SQLite

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,占用资源非常少,只有几百KB内存.支持Windows/Linux ...

随机推荐

  1. K-means clustering (K-means聚类)

    问题: K-所有值聚类是无监督学习算法 设数据集.当中,. 如果这个数据能够分为类. 把这个问题模型化: , 当中代表第类的聚点(中心点.均值). 该模型能够用EM算法进行训练: 初始化,. E步:固 ...

  2. DLL五篇

    http://www.cnblogs.com/NeuqUstcIim/archive/2009/01/12/1374511.htmlhttp://www.cnblogs.com/NeuqUstcIim ...

  3. 访问祖先类的虚方法(直接访问祖先类的VMT,但是这种方法在新版本中未必可靠)

    访问祖先类的虚方法 问题提出 在子类覆盖的虚方法中,可以用inherited调用父类的实现,但有时候我们并不需要父类的实现,而是想跃过父类直接调用祖先类的方法. 举个例子,假设有三个类,实现如下: t ...

  4. 使用PageHeap.EXE或GFlags.EXE检查内存越界错误

    必先利其器之一:使用PageHeap.EXE或GFlags.EXE检查内存越界错误 Article last modified on 2002-6-3 ------------------------ ...

  5. HDU 1007 近期点对

    分治法求近期点对 递归将点不断分成小组.计算最短距离.此时的最短距离不过两点都属两块的某一块(这里的切割点是mid点). 还须要考虑两点分属两块的情况. 这时对于选点则把范围缩小到了以mid为中心. ...

  6. Python语言总结 4.2. 和字符串(str,unicode等)处理有关的函数

    4.2.7. 去除控制字符:removeCtlChr Python语言总结4.2. 和字符串(str,unicode等)处理有关的函数Sidebar     Prev | Up | Next4.2.7 ...

  7. queue C++

    #include <iostream> using namespace std; class DequeEmptyException { public: DequeEmptyExcepti ...

  8. 从iReport至Jaspersoft Studio

    这篇文章同步到http://www.waylau.com/from-ireport-to-jaspersoft-studio/ 从5.5版本号開始,Jaspersoft Studio将代替iRepor ...

  9. 使用RouteDebugger对MVC路由进行调试

    在Asp.Net MVC程序中,路由是MVC程序的入口,每一个Http请求都要经过路由计算,然后匹配到相应的Controller和Action.通常我们的路由都会注册在Global.asax.cs文件 ...

  10. Drools学习笔记-01-在eclipse indgo集成Drools5.5

    1.1.条件 Drools它是一个基于Java开源规则引擎.因此,使用Drools以及前需要安装在开发机器JDK周边环境,Drools5.5需要JDK版本号的1.5或者更多. 1.2.开发环境搭建 大 ...