1、创建SQLite数据库

需要自己创建一个类来继承SQLiteOpenHelper类

SQLiteOpenHelper类是一个创建SQLite数据库的辅助类

继承此类的时候需要重写三个方法

public dbHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);

//此方法在实例化此辅助类的时候,传入相应的参数便可以自动创建数据库

//Context 上下文对象

//String   数据库名称

//CursorFactory 游标工厂,可以不填

// version   数据库版本号,更新时使用
}

@Override
public void onCreate(SQLiteDatabase db) {
//db.execSQL("create table Book(_id integer primary key," + "_name text,"
//+ "_password text)");
//Log.i("TAG", "名称为Book的表创建完成");

//此方法在数据库创建的同时执行,建表操作放在此处便可以避免表明重复而造成的程序崩溃

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

//数据库升级时使用

}

2、数据库的增、删、改、查

  

 在需要创建数据库的类中实例化辅助类,并且获取SQLiteDatabases 对象

  1、

  dbHelper dbh;//外围定义句柄值

  public SQLiteDatabase getDatabases() {//创建一个方法,用来获取SQLiteDatabases对象

  dbh = new dbHelper(MainActivity.this, "book.db", null, 1);//传入数据

                               //上下文对象,表名称,游标工厂,数据库版本号

  Log.i("TAG", "名称为book.db的数据库创建完成");//提示

  return dbh.getWritableDatabase();//返回可写的SQLiteDatabases

  }

  2、  

  获取SQLiteDatabases句柄值

  SQLiteDatabase db = getDatabases();//获取控制数据

  

添加数据  

  ContentValues cv = new ContentValues();
  cv.put("_name", "liujunfei");
  cv.put("_password", "zheshimima");
  db.insert("Book", null, cv);

  //insert方法参数

  //第一个参数:需要插入的表名称

  //第二个参数:可以置空(暂时不知道)

  //第三个参数:ContentValues 需要插入数据的键值对

  Log.i("TAG", "数据插入完成");

删除数据

  db.execSQL("delete from Book where _id=2");//通过ID删除数据 必须是primary key  不然报错

   Log.i("TAG", "数据删除成功" );

查询数据

  

  Cursor cursor = db.rawQuery("select*from Book", null);//选择表
  while (cursor.moveToNext()) {//遍历数据
  String name = cursor.getString(cursor
  .getColumnIndex("_name"));//获取列名_name下的所有数据
  Log.i("TAG", "查询到的用户: " + name);
  Message msg = Message.obtain();
  msg.what = 1;
  msg.obj = name;
  handler.sendMessage(msg);//通过handler发送数据
  }

  Handler handler = new Handler() {
  public void handleMessage(android.os.Message msg) {
  switch (msg.what) {
  case 1:
  String result = (String) msg.obj;//获取到发送过来的数据
  list_user_name.add(result);//将发送过来的数据添加到ArrayList中
  lv.setAdapter(new ArrayAdapter<String>(MainActivity.this,
  android.R.layout.simple_list_item_1, list_user_name));
  break;

  }
  };
 };

查询特定的数据

  Cursor cursor = db.rawQuery(
  "select*from Book where _name =? and _password=?",
  new String[] { "liujunfei", "zheshimima" });//在此处填写需要查询的数据
  while (cursor.moveToNext()) {
  String name = cursor.getString(cursor
  .getColumnIndex("_name"));
  Log.i("TAG", "查询到的用户: " + name);
  }

Android SQLite用法的更多相关文章

  1. Android sqlite管理数据库基本用法

    Android操作系统中内置了sqlite数据库(有关sqlite数据库详细介绍见:http://zh.wikipedia.org/wiki/SQLite),而sqllite本身是一个很小型的数据库, ...

  2. Android SQLite 通配符查询找不到参数问题

    使用Android SQLite中SQLiteDatabase类的query方法查询时,如果where中包含通配符,则参数会无法设置,如类似下面的方法查询时 SQLiteDatabase db = d ...

  3. Android Meun 用法

    Android Meun 用法 点击菜单实体键弹出菜单:如下图 main_activity.xml <?xml version="1.0" encoding="ut ...

  4. Android ViewPager 用法

    Android ViewPager 用法 场景:一般第一次打开应用程序时,程序会有一个提示页来给展现应用程序都有哪些功能:或者程序更新时,又更新哪些新特性,都可以使用ViewPager Demo 描述 ...

  5. Android+Sqlite 实现古诗阅读应用(三)

    往期传送门: Android+Sqlite 实现古诗阅读应用(一) Android+Sqlite 实现古诗阅读应用(二) 加入截图分享的功能. 很多应用都有分享的功能,我也想在我的古诗App里加入这个 ...

  6. Android+Sqlite 实现古诗阅读应用(二)

    传送门:Android+Sqlite 实现古诗阅读应用(一) Hi,又回来了,最近接到很多热情洋溢的小伙伴们的来信,吼开心哈,我会继续努力的=-=! 上回的东西我们做到了有个textview能随机选择 ...

  7. Android Sqlite 数据库版本更新

      Android Sqlite 数据库版本更新 http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承 ...

  8. Android SQLite总结(一) (转)

    Android SQLite总结(一)  郑海波 2012-08-21 转载请声明:http://blog.csdn.net/nuptboyzhb/article/details/7891887 前言 ...

  9. android SQLite使用SQLiteOpenHelper类对数据库进行操作

    android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580

随机推荐

  1. Django学习手册 - 自定义分页函数

    前端代码: <div class="xianshi"> {% for i in info %} <ul> <li>{{ i }}</li& ...

  2. 操作dom影响性能的原因

    为什么dom操作会影响性能? 在浏览器当中,dom的实现和ECMAScript的实现是分离的. 例如,在IE中,ECMAScrit的实现在jscript.dll中,而DOM的实现在mshtml.dll ...

  3. 【编程拾遗】C++的static成员函数与单例模式

    static小结 static的引入 static 是C++中非经常常使用的修饰符,它被用来控制变量的存储方式和可见性. 函数内部定义的变量,在程序运行到它的定义处时,编译器为它在栈上分配空间,函数在 ...

  4. C++以const 作为返回值类型的意义

    const rational operator*(const rational& lhs, const rational& rhs); 很多程序员第一眼看到它会纳闷:为什么operat ...

  5. 什么是 java.awt.headless

    以下是网上的说法,我觉得简单地说就是有些功能需要硬件设备协助,比如显卡,但如果是服务器可能都没装显卡,这时就需要JDK调用自身的库文件去摸拟显卡的功能. 什么是 java.awt.headless? ...

  6. vue 选城市三级联动

    <div id="example"> <select v-model="prov"> <option v-for="op ...

  7. 设计模式C++学习笔记之八(Adapter适配器模式)

      适配器模式,使用之处比较特殊,不属于常规设计模式,主要用于不同系统之间的处理.是将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工 ...

  8. Centos6.8上httpd配置腾讯云SSL证书

    (1)先按装mod_ssl yum -y install mod_ssl /etc/httpd/conf.d/下会有一个ssl.conf的文件,打开 a)检测本地证书配置是否正确 主要是看下证书及密钥 ...

  9. Win10系统BitLocker解锁后再次快速锁定办法

    原文地址:https://blog.csdn.net/ttljtw/article/details/54022241 谁都不愿意把自己电脑上资料完全公开,对资料选择性加密处理是唯一的办法. 微软Win ...

  10. mysql备份和bin-log日志

    总结]:mysql备份和bin-log日志 备份数据: mysqldump -uroot -p123456 test -l -F '/tmp/test.sql' -l:读锁(只能读取,不能更新) -F ...