一:创建数据库

package com.itcode.mysqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper; /**
* 继承SQLiteOpenHelper,创建数据库
* @author Administrator
*
*/
public class MySQLiteOpenHelper extends SQLiteOpenHelper{ //一:声明构造函数
/**
* @param context 当前应用的环境,用来确定数据库目录
* @param name 数据库文件的名字
* @param factory 游标工厂,用来创建结果集对象
* @param version 数据库版本 从1开始
*/
public MySQLiteOpenHelper(Context context) {
super(context, "itcode.db", null, 1);
} //二:重写onCreate方法 数据库被创建时调用
public void onCreate(SQLiteDatabase db) {
System.out.println("MySQLiteOpenHelper-->onCreate 被调用!");
//1.创建数据库
db.execSQL("create table account(_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),balance INTEGER)");
// db.execSQL("CREATE TABLE account(_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20))"); // 执行一条SQL语句 }
//三:重写onUpgreade方法,数据库时调用
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// System.out.println("MySQLiteOpenHelper-->onUpgrade 被调用");
// db.execSQL("alter table account ADD balance integer");
// db.execSQL("ALTER TABLE account ADD balance INTEGER"); } }

二:对数据库进行CRUD操作

package com.itcode.mysqlite;

import java.util.ArrayList;
import java.util.List; import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase; public class AccountDao {
//一:创建AccountDao时依据当前context创建数据库
private MySQLiteOpenHelper mySQLiteOpenHelper;
public AccountDao(Context context){
mySQLiteOpenHelper = new MySQLiteOpenHelper(context);
}
//二:增:传进来一个Account,将此对象加入数据库
public int add(Account a){
//1.获取相应的(可写的)数据库
SQLiteDatabase writableDatabase = mySQLiteOpenHelper.getWritableDatabase();
//2.执行语句
writableDatabase.execSQL("insert into account(name,balance) values(?,?)", new Object[]{a.getName(),a.getBalance()});
//3.获取插入的数据集:
Cursor rawQuery = writableDatabase.rawQuery("select _id from account order by _id desc limit 1", null);
rawQuery.moveToNext();
int id = rawQuery.getInt(rawQuery.getColumnIndex("_id"));
//4.关闭数据库
return id;
}
//三:删:根据id删除数据库中相应的数据项
public void delete(int id){
//1.获取相应的(可写的)数据库
SQLiteDatabase writableDatabase = mySQLiteOpenHelper.getWritableDatabase();
//2.执行删除语句
writableDatabase.execSQL("Delete from account where _id = ?",new Object[]{id});
//3.关闭数据库
writableDatabase.close();
}
//四:改:传进来一个Account,根据Account的对象的id修改name 和balance
public void update(Account a){
//1.获取相应的(可写的)数据库
SQLiteDatabase writableDatabase = mySQLiteOpenHelper.getWritableDatabase();
//2.执行更新语句
writableDatabase.execSQL("update account set name=?,balance = ? where _id = ?",new Object[]{a.getName(),a.getBalance(),a.getId()});
//3.关闭数据库
writableDatabase.close();
}
//五:查:根据id查询数据库
public Account query(int id){
//1.获取相应的(可读的)数据库
SQLiteDatabase readableDatabase = mySQLiteOpenHelper.getReadableDatabase();
//2.执行更新语句
Cursor rawQuery = readableDatabase.rawQuery("select * from account where _id=?", new String[]{String.valueOf(id)});
//3.将查询到的数据赋值给Account对象
Account a = null;
while(rawQuery.moveToNext()){
Integer balance = Integer.valueOf(rawQuery.getString(rawQuery.getColumnIndex("balance")));
String name = rawQuery.getString(rawQuery.getColumnIndex("name"));
a = new Account(id,name,balance);
}
//3.关闭结果集与数据库
rawQuery.close();
readableDatabase.close();
return a;
}
//六:查询所有,将查询到的所有数据放在list集合中返回
public List<Account> queryAll(){
List<Account> list = new ArrayList<Account>();
Account a = null;
//1.获取相应的(可读的)数据库
SQLiteDatabase readableDatabase = mySQLiteOpenHelper.getReadableDatabase();
Cursor rawQuery = readableDatabase.rawQuery("Select * from account",null);
while(rawQuery.moveToNext()){
Integer id = Integer.valueOf(rawQuery.getString(rawQuery.getColumnIndex("_id")));
String name = rawQuery.getString(rawQuery.getColumnIndex("name"));
Integer balance = Integer.valueOf(rawQuery.getString(rawQuery.getColumnIndex("balance")));
a = new Account(id,name,balance);
list.add(a);
}
//3.关闭资源
rawQuery.close();
readableDatabase.close();
return list;
}
//七:分页查询:传入要查询第几页,每页显示几条数据,将查询到的数据放在list集合中返回
public List<Account> queryPage(int pageNum,int pageSize){
List<Account> list = new ArrayList<Account>();
Account a = null;
String index = String.valueOf((pageNum-1)*pageSize);
String count = String.valueOf(pageSize);
//1.获取相应的(可读的)数据库
SQLiteDatabase readableDatabase = mySQLiteOpenHelper.getReadableDatabase();
//2.执行相应的查询语句
Cursor rawQuery = readableDatabase.rawQuery("select * from account limit ?,?", new String[]{index,count});
while(rawQuery.moveToNext()){
Integer id = Integer.valueOf(rawQuery.getString(rawQuery.getColumnIndex("_id")));
String name = rawQuery.getString(rawQuery.getColumnIndex("name"));
Integer balance = Integer.valueOf(rawQuery.getString(rawQuery.getColumnIndex("balance")));
a = new Account(id,name,balance);
list.add(a);
}
//3.关闭相应的资源
rawQuery.close();
readableDatabase.close();
return list;
}
//八:查询总记录条数
public int queryCount(){
//1.获取相应的(可读的)数据库
SQLiteDatabase readableDatabase = mySQLiteOpenHelper.getReadableDatabase();
//2.执行相应的语句
Cursor rawQuery = readableDatabase.rawQuery("select count(*) from account", null);
rawQuery.moveToNext();//不加此句可否?不能去掉!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
int count = rawQuery.getInt(0);
//3.关闭资源
rawQuery.close();
readableDatabase.close();
return count;
}
//九:事物管理 从一个Account对象向另一个Account对象汇款,传入参数,fromid,toId,moneySize
public void remit(int fromId,int toId,int moneySize){
SQLiteDatabase writableDatabase = null;
try {
//1.获取相应的(可写的)数据库
writableDatabase = mySQLiteOpenHelper.getWritableDatabase();
//2.开启事物
writableDatabase.beginTransaction();
//3.执行相应的语句
writableDatabase.execSQL("update account set balance=balance-? where _id = ?", new Object[]{moneySize,fromId});
writableDatabase.execSQL("update account set balance=balance+? where _id = ?",new Object[]{moneySize,toId});
//4.设置成功标记
writableDatabase.setTransactionSuccessful();
//5.关闭资源
writableDatabase.close();
} catch (Exception e) {
//6.结束事务,会把最后一次成功标记之前的事务提交
writableDatabase.endTransaction();
e.printStackTrace();
} }
}

三:对CRUD的方法的测试:

package com.itcode.mysqlite;

import java.util.List;
import java.util.Random; import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase; public class SQLiteTest extends AndroidTestCase{
//1.测试创建数据库的方法
public void testCreateDB(){
//1.创建数据库
MySQLiteOpenHelper helper = new MySQLiteOpenHelper(getContext());
//2.得到相应的数据库
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("INSERT INTO account(_id,name, balance) VALUES(1,'fuck', 10000)"); } //2.测试添加数据的方法
public void testAdd(){
AccountDao dao = new AccountDao(getContext());// Context android.test.AndroidTestCase.getContext()
for(int i=1;i<100;i++){
dao.add(new Account("Test" + i,new Random().nextInt(10000)));
}
}
//3.测试删除数据的方法
public void testDelete(){
AccountDao dao = new AccountDao(getContext());
for(int i=100;i<200;i++){
dao.delete(i);
}
}
//4.测试修改数据的方法
public void testUpdate(){
AccountDao dao = new AccountDao(getContext());
Account a = new Account(1,"fuck you!!!~",999);
dao.update(a);
}
//5.测试查询数据的方法,根据id查询数据库
public void testQuery(){
AccountDao dao = new AccountDao(getContext());
System.out.println(dao.query(1));
System.out.println(dao.query(3));
System.out.println(dao.query(4));
}
//6.测试查询所有的方法
public void testQueryAll(){
AccountDao dao = new AccountDao(getContext());
List<Account> list =null;
list = dao.queryAll();
for (Account account : list) {
System.out.println(account);
}
}
//7.测试分布查询的方法
public void testQueryPage(){
AccountDao dao = new AccountDao(getContext());
List<Account> list = null;
list = dao.queryPage(2, 10);
for (Account account : list) {
System.out.println(account);
}
}
//8.测试查询总记录条数的方法
public void testQueryCount(){
AccountDao dao = new AccountDao(getContext());
int count = dao.queryCount();
System.out.println(count);
}
}

Android下的SQLite数据库的相关操作及AndroidTestCase测试的更多相关文章

  1. Android下利用SQLite数据库实现增删改查

    1: 首先介绍如何利用adb查看数据库 1: adb shell 2: cd /data/data/包名/databases 3:  sqlite3 数据库 4   接下来就可以进行数据库的sql语法 ...

  2. Android下用Sqlite数据库存储数据

    第一步:  写个类 ,继承 SQLiteOpenHelper public class MyDatabaseOpenHelper extends SQLiteOpenHelper { } 第二步:   ...

  3. linux下安装mysql数据库与相关操作

    如下命令都是用root身份安装,或者在命令前加上sudo 采用yum安装方式安装 yum install mysql #安装mysql客户端 yum install mysql-server #安装m ...

  4. Android 开发中 SQLite 数据库的使用

    SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, ...

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

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

  6. PHP对MySQL数据库的相关操作

    一.Apache服务器的安装 <1>安装版(计算机相关专业所用软件---百度云链接下载)-直接install<2>非安装版(https://www.apachehaus.com ...

  7. Android存储之SQLite数据库

    Android存储之SQLite数据库数据库 创建数据库 package --; import android.content.Context; import android.database.sql ...

  8. Android基础总结+SQlite数据库【申明:来源于网络】

    Android基础总结+SQlite数据库[申明:来源于网络] 基础总结篇之一:Activity生命周期:http://blog.csdn.net/liuhe688/article/details/6 ...

  9. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

随机推荐

  1. windows上安装winsshd

    winsshd下载地址:http://www.bitvise.com/ssh-server-download 安装后默认配置即可使用:

  2. 【转】深圳FAE,想拿高薪还缺什么?

    原文网址:http://www.eefocus.com/KTHR_IC/blog/11-05/222793_e04c8.html KT老胡您好! 我07年本科毕业在一家医疗民营企业从事了3年多的嵌入式 ...

  3. 【转】Android开源项目发现---ListView篇(持续更新)

    原文网址:http://blog.csdn.net/krislight/article/details/20211045 资料转载地址:https://github.com/Trinea/androi ...

  4. Delphi 调试 通过BreakPoint

    1.打个断点, 如下图 2. 在断点上,邮件,如下图 3. 弹出一个窗体 ,如下图 在 condition 中写条件就可以了.  这样就可以按你假设的条件来进行了,方便.

  5. 2014.7.8模拟赛【笨笨当粉刷匠】|bzoj1296 [SCOI]粉刷匠

    笨笨太好玩了,农田荒芜了,彩奖用光了,笨笨只好到处找工作,笨笨找到了一份粉刷匠的工作.笨笨有n条木板需要被粉刷.每条木板被分成m个格子,每个格子要被刷成红色或蓝色.笨笨每次粉刷,只能选择一条木板上一段 ...

  6. POJ1845 数论 二分快速取余

    大致题意: 求A^B的所有约数(即因子)之和,并对其取模 9901再输出. 解题思路: 应用定理主要有三个: (1)   整数的唯一分解定理: 任意正整数都有且只有一种方式写出其素因子的乘积表达式. ...

  7. MySql 查询表字段数

    MySql 查询表字段数 SELECT COUNT(*) FROM information_schema.columns WHERE table_schema='test_cases' AND tab ...

  8. python linecache标准库基础学习

    #python标准库基础之:linecacge:高效读取文本文件#说明与作用"""可以从文件或者导入python模块获取文件,维护一个结果缓存,从而可以更高效地从相同文件 ...

  9. python高级编程:有用的设计模式2

    # -*- coding: utf-8 -*- __author__ = 'Administrator' #python高级编程:有用的设计模式 #代理 """ 代理对一 ...

  10. 升级IOS9,提示滑动升级,卡在password锁屏界面,无反应了

    注:升级之前一定要把锁屏password取消掉 若遇上述问题.可通过进入DFU 模式解决 进入DFU具体步骤.(进入成功后,屏幕为全黑) 注:在进入DFU操作时务必与电脑连接好数据线. 1.按住pow ...