SQLite操作

 1 public class DBOpenHelper extends SQLiteOpenHelper {
 2
 3     public DBOpenHelper(Context context) {
 4         super(context, "itcast.db", null, 2);//<包>/databases/
 5     }
 6
 7     @Override
 8     public void onCreate(SQLiteDatabase db) {//是在数据库每一次被创建的时候调用的
 9         db.execSQL("CREATE TABLE person(personid integer primary key autoincrement, name varchar(20), phone VARCHAR(12) NULL)");
10     }
11
12     @Override
13     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //数据库版本改变时调用
14         db.execSQL("ALTER TABLE person ADD amount integer");
15     }
16
17 }
  1 public class PersonService {
  2     private DBOpenHelper dbOpenHelper;
  3
  4     public PersonService(Context context) {
  5         this.dbOpenHelper = new DBOpenHelper(context);
  6     }
  7
  8     public void payment(){
  9         SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
 10         db.beginTransaction();//开启事务
 11         try{
 12             db.execSQL("update person set amount=amount-10 where personid=1");
 13             db.execSQL("update person set amount=amount+10 where personid=2");
 14             db.setTransactionSuccessful();//设置事务的标志为True
 15         }finally{
 16             db.endTransaction();//结束事务,有两种情况:commit,rollback,
 17         //事务的提交或回滚是由事务的标志决定的,如果事务的标志为True,事务就会提交,否侧回滚,默认情况下事务的标志为False
 18         }
 19     }
 20     /**
 21      * 添加记录
 22      * @param person
 23      */
 24     public void add(Person person){
 25         SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
 26         db.execSQL("insert into person(name, phone, amount) values(?,?,?)",
 27                 new Object[]{person.getName(), person.getPhone(), person.getAmount()});
 28     }
 29     /**
 30      * 删除记录
 31      * @param id 记录ID
 32      */
 33     public void delete(Integer id){
 34         SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
 35         db.execSQL("delete from person where personid=?", new Object[]{id});
 36     }
 37     /**
 38      * 更新记录
 39      * @param person
 40      */
 41     public void update(Person person){
 42         SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
 43         db.execSQL("update person set name=?,phone=?,amount=? where personid=?",
 44                 new Object[]{person.getName(), person.getPhone(),  person.getAmount(), person.getId()});
 45     }
 46     /**
 47      * 查询记录
 48      * @param id 记录ID
 49      * @return
 50      */
 51     public Person find(Integer id){
 52         SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
 53         Cursor cursor = db.rawQuery("select * from person where personid=?", new String[]{id.toString()});
 54         if(cursor.moveToFirst()){
 55             int personid = cursor.getInt(cursor.getColumnIndex("personid"));
 56             int amount = cursor.getInt(cursor.getColumnIndex("amount"));
 57             String name = cursor.getString(cursor.getColumnIndex("name"));
 58             String phone = cursor.getString(cursor.getColumnIndex("phone"));
 59             return new Person(personid, name, phone, amount);
 60         }
 61         cursor.close();
 62         return null;
 63     }
 64     /**
 65      * 分页获取记录
 66      * @param offset 跳过前面多少条记录
 67      * @param maxResult 每页获取多少条记录
 68      * @return
 69      */
 70     public List<Person> getScrollData(int offset, int maxResult){
 71         List<Person> persons = new ArrayList<Person>();
 72         SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
 73         Cursor cursor = db.rawQuery("select * from person order by personid asc limit ?,?",
 74                 new String[]{String.valueOf(offset), String.valueOf(maxResult)});
 75         while(cursor.moveToNext()){
 76             int personid = cursor.getInt(cursor.getColumnIndex("personid"));
 77             int amount = cursor.getInt(cursor.getColumnIndex("amount"));
 78             String name = cursor.getString(cursor.getColumnIndex("name"));
 79             String phone = cursor.getString(cursor.getColumnIndex("phone"));
 80             persons.add(new Person(personid, name, phone, amount));
 81         }
 82         cursor.close();
 83         return persons;
 84     }
 85     /**
 86      * 分页获取记录
 87      * @param offset 跳过前面多少条记录
 88      * @param maxResult 每页获取多少条记录
 89      * @return
 90      */
 91     public Cursor getCursorScrollData(int offset, int maxResult){
 92         SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
 93         Cursor cursor = db.rawQuery("select personid as _id,name,phone,amount from person order by personid asc limit ?,?",
 94                 new String[]{String.valueOf(offset), String.valueOf(maxResult)});
 95         return cursor;
 96     }
 97
 98     /**
 99      * 获取记录总数
100      * @return
101      */
102     public long getCount(){
103         SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
104         Cursor cursor = db.rawQuery("select count(*) from person", null);
105         cursor.moveToFirst();
106         long result = cursor.getLong(0);
107         cursor.close();
108         return result;
109     }
110 }
时间: 2024-09-20 18:51:11

SQLite操作的相关文章

C#使用System.Data.SQLite操作SQLite

使用System.Data.SQLite 下载地址:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 得到System.Data.SQLite.dll添加到工程引用: 建表,插入操作 static void Main(string[] args) { SQLiteConnection conn = null; string dbPath = "Data Source =" + Environmen

SQLite操作总结

引用: System.Data.SQLite.dll System.Data.SqlClient.dll 注意::::SQLite.Interop.076.dll 这样的dll必须放在wince设备上("计算机\BT-W_Series\\\Windows"或者"程序根目录") using System; using System.Data.SQLite; namespace Framework.DataAccess { public class SQLiteMage

树莓派学习笔记——SQLite操作简述

0 前言 本文介绍如何在树莓派中利用SQLite数据库保存CPU温度数据.SQLite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用.SQLite文档详细资料丰富,本文不会详细解释SQLite数据库操作的方方面面,只能结合具体场景按需说明.本文介绍的SQLite技巧也可以在其他平台使用,并不局限于树莓派. 本文继续折腾树莓派温度,需要从中可以玩出新花样. [相关博文] [树莓派学习笔记--索引博文]--更多博文请关注. [树莓派学习笔记--获取树莓派CPU温度] [树莓派学习笔

SQLite操作(C# )

C#连接SQLite的...方法 http://www.cnblogs.com/virusswb/archive/2010/09/17/SQLite1.html 1 SQLite简介 SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl.C#

[Android新手区] SQLite 操作详解--SQL语法

该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解析大部分标准SQL语言.但它也省去了一些特性并且加入了一些自己的新特性.这篇文档就是试图描述那些SQLite支持/不支持的SQL语法的.查看关键字列表. 如下语法表格中,纯文本用蓝色粗体显示.非终极符号为斜体红色.作为语法一部分的运算符用黑色Roman字体表示. 这篇文档只是对SQLite实现的SQ

C#对sqlite操作类

/// <summary>    /// SQLite 操作类    /// Author Light    /// </summary>    public class SQLite    {        /// <summary>        /// 数据库        /// </summary>        public static string dataBasePath; public static string dataBasePass

Sqlite操作的一些关键类的官方说明与Intent的startactivityforresult方法

Intent: 该功能可以用于通过intent来跳转界面时候传递信号给原理的页面,以便做出一些处理: sqlite的使用: 该方法得到的sqlitedatabase可读可写,而getreadabledatabase是只读的: 继承sqliteopenhelper必须要实现的方法之一:sqliteopenhelper是一个抽象类,抽象类的抽象方法必须实现或者继续创建为抽象类继承该抽象类却不用实现具体的父类的抽象方法,接口默认都是抽象类与抽象方法. Baseadapter的使用说明: 所以一般的操作

python sqlite操作

1.sqlite 中指令操作 删除db中某一个table: delete from column_data where table_name="table1"or table_name= "table2"

Android开发-Sqlite操作

在写文章的核心的部分时我想简单的提一个小技巧: 大家通常在布局的使用中可能经常性的发现一个头部或者尾部的一个整体会被经常性的使用,在通常的java程序中这样重复的部分一般考虑用类进行封装,在android中xml式的文件中会怎么样处理?这里考虑用xml文件进行部件的封装. 先看我写的一个实际的xml文件 可以看出这样的xml文件中包含很多的图片文件,我们在定义一个drawable的时候可以通过xml定义的drawable对象.它使得一个图片能在不同的状态下显示不同的图案,比如一个Button,它

SQLite操作数据库的步骤

package com.example.dbdemo; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.widget.Toast; publ