最近项目又用到了 数据库的操作,刚好把以前的拿来总结一下,也顺便帮助别人能够快速使用,代码片段全部都贴出来,

//  第一次使用软件自动  创建数据库  继承工具类 SQLiteOpenHelper//  调用    SQLiteOpenHelper.getwritableDatabase(); 就执行创建方法public class DBhelper extends SQLiteOpenHelper{public DBhelper(Context context) {super(context,  "lilei",   //数据库的名字       null ,    //游标 null 为使用系统默认的 游标工厂产出游标对象       1          //数据库文件版本号   不能为0 。      );}@Override     //数据库第一次被创建的时候调用public void onCreate(SQLiteDatabase db) {   //SQLiteDatabase封装了对数据库所有的操作   db.execSQL("create table if not exists info" +           "(id integer primary key autoincrement , name varchar(20))"); //如果要创建多张表就继续//db.execSQL("create table info1 (id integer primary key autoincrement, name vachar(50),money int)");      }@Override   //当上面的 版本号 变更时 调用这个函数 额外添加public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("drop table if exists info");//db.execSQL("alter table ll add age varchar(20) null");}}


然后就是对数据库操作的类了。

public class SQLHandle {private DBhelper dbh;public SQLHandle(Context c){this.dbh=new DBhelper(c);}    //设置事物  提交public void shiwu(){SQLiteDatabase db= dbh.getWritableDatabase();try{       db.beginTransaction();      /////////////////////////////////              ////////////////////////////////       db.setTransactionSuccessful();       }finally{    db.endTransaction();  // 回滚}}//public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);//各个参数的意义说明://table:表名称//columns:列名称数组//selection:条件字句,相当于where//selectionArgs:条件字句,参数数组//groupBy:分组列//having:分组条件//orderBy:排序列//limit:分页查询限制//Cursor:返回值,相当于结果集ResultSet//getCount() 获得总的数据项数//isFirst() 判断是否第一条记录//isLast()  判断是否最后一条记录//moveToFirst() 移动到第一条记录//moveToLast() 移动到最后一条记录//move(int offset) 移动到指定记录//moveToNext() 移动到下一条记录//moveToPrevious() 移动到上一条记录//getColumnIndexOrThrow(String columnName) 根据列名称获得列索引//getInt(int columnIndex) 获得指定列索引的int类型值//getString(int columnIndex) 获得指定列缩影的String类型值/** 查询  **/ public void find(String id){   //SQLiteDatabase db= dbh.getReadableDatabase();// getWritableDatabase() 首先调用 writeable 方法// 比如存储空间磁盘满了        不成功的情况下   只能读SQLiteDatabase db= dbh.getWritableDatabase();//1.返回cursor对象  -----ResultSetCursor cu=db.rawQuery("select * from where id=?",new String[]{id});if(cu.moveToFirst()){cu.getInt(cu.getColumnIndex("id"));cu.getString(cu.getColumnIndex("name"));cu.getString(cu.getColumnIndex("age"));}//2.Cursor cu1=db.query("ll",                  //表名new String[]{"id","name","age"},  //要获取的字段值  null 为查询所有字段"id=?",                           // wherenew String[]{"1212"},             // where 条件 =null,            //groupBynull,             //havingnull);         //orderByif(cu1.moveToFirst()){cu1.getInt(cu1.getColumnIndex("id"));cu1.getString(cu1.getColumnIndex("name"));cu1.getString(cu1.getColumnIndex("age"));}//用完记得关闭cu.close();db.close();}/*** 插入 ***/public void insert(String name, String age){   SQLiteDatabase sqld=dbh.getWritableDatabase();    // 缓存特点     sqld1 和 sqld 指向的是同1个实例   //SQLiteDatabase sqld1=dbh.getWritableDatabase();       sqld.execSQL("insert into ll (name,age,sex) values (?,?,?)",       new Object[]{name,age});              //2        ContentValues value=new ContentValues();       value.put("id", 10);       value.put("name", "455");       value.put("age", 20);       sqld.insert("ll", null, value);       sqld.insert("ll", "id", null);// 第2参数 空值字段                                     //有特殊处理 主键 null值 自动增长                     sqld.close();       }/***  更新    ***/public void update(String id,String name,String age){SQLiteDatabase sqld=dbh.getWritableDatabase(); //1sqld.execSQL("update ll set name=?,age=? where id=? ",new Object[]{id,name,age});//2//调用SQLiteDatabase的update(String table,ContentValues values,String whereClause, String[] whereArgs)方法。//参数是表名称,参数是更行列ContentValues类型的键值对(Map),参数是更新条件(where字句),参数是更新条件数组。    ContentValues value=new ContentValues();    value.put("id", 10);    value.put("name", "455");    value.put("age", 20);sqld.update("ll", value, "id=?", new String[]{"201"});//用完记得关闭sqld.close();}/**   删除     **/public void delete(String id){SQLiteDatabase sqld=dbh.getWritableDatabase();     //1sqld.execSQL("delete from ll where id=?",new Object[]{id});    //2.//调用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法,//参数一是表名称,参数二是删除条件,参数三是删除条件值数组;sqld.delete("ll", "id=?", new String[]{"dsds"});//用完记得关闭sqld.close();}/**  删除指定数据库   **/private void drop(SQLiteDatabase db){/////////////////////////////////     //删除表的SQL语句             String sql ="DROP TABLE stu_table";               //执行SQL           db.execSQL(sql);     }   //分页  public List<Vector> getScollDate(int offset,int maxResult){    SQLiteDatabase db= dbh.getWritableDatabase();//1    Cursor cu=db.rawQuery("select * from ll order by " +"id asc " +"limit ?,?",new String[]{String.valueOf(offset),String.valueOf(maxResult)});Vector vs=new Vector();//得到多条结果集    while(cu.moveToNext()){    Vector v=new Vector();    int id=cu.getInt(cu.getColumnIndex("id"));    String name=cu.getString(cu.getColumnIndex("name"));    String age=cu.getString(cu.getColumnIndex("age"));        v.add(id);    v.add(name);    v.add(age);    vs.add(v);               //2.    db.query("ll",     //table    null,         //colument      null,     null,     null,     null,     //having     "id asc",     //orderBy    offset+","+maxResult);    }            //关闭数据库    cu.close();    db.close();return vs;}//记录总数public long getCount(){   SQLiteDatabase db= dbh.getWritableDatabase();   Cursor cu=db.rawQuery("select count(*) from ll",null);   //最后也会有1条数据  写0   cu.moveToFirst();   long l=cu.getLong(0);         // -------------  2   Cursor c1=db.query("ll", new String[]{"count(*)"}, null, null, null, null, null);                 /////////////////      return l;}}




当然,个人还是觉得用 sql 比较方便,因为大家肯定都是多多少少接触过数据库的







更多相关文章

  1. android中短信协议与字段
  2. android通过HTTP协议上传文件至远程服务器
  3. Android中更改SQLite数据库中的数据后,刷新ListView。
  4. android直接链接sqlserver数据库
  5. SQlite数据库简介
  6. Android五大存储之SQLite
  7. Android通过xml文件配置数据库
  8. 内容为引用别人的文章,备自己学习之用.
  9. android 数据库 sqlite数据类型(时间 日期 double等)

随机推荐

  1. Android(安卓)Battery一些信息获取方法
  2. Android(安卓)网络操作(上传下载等)
  3. Android(安卓)之 ProgressDialog用法介绍
  4. Android单选按钮组(RadioGroup)的用法
  5. Android(安卓)线程池管理工具类
  6. android 图片全屏
  7. android判断是否连接网络
  8. android之创建快捷方式
  9. android 通话记录次数
  10. android 解析xml字符串