Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类。在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写下面两个
方法。

public class MySQLiteHelper extends SQLiteOpenHelper {

public MySQLiteHelper(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version);

// TODO Auto-generated constructor stub

}

//数据库首次创建时运行此方法。一般讲创建表等初始化工作放在此处

//execSQL创建表

@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

//创建表

String sql="create table if not exists hero_info("+ "id integer primary key,"+ "name varchar,"+ "level integer)";

db.execSQL(sql);


}

@Override

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

// TODO Auto-generated method stub



}

MainActivity.java

package com.example.sqllite;

import android.app.Activity;

import android.content.ContentValues;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase; 

import android.graphics.Color;

import android.os.Bundle;

import android.widget.TextView; 

public class MainActivity extends Activity {

private TextView tv;

private MySQLiteHelper h;





    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        init();

    }

    public void init(){

     tv=(TextView) findViewById(R.id.tv);

    
h=new MySQLiteHelper(this, "my.db", null, 1);

    insertAndUpdateData(h);

    //查询数据

    String result = queryData(h);

    tv.setTextColor(Color.RED);

    tv.setTextSize(20.0f);

    tv.setText("名字\t等级\n"+result);

   

   

    }

    

 

private void insertAndUpdateData(MySQLiteHelper helper) {

// TODO Auto-generated method stub



//
调用getReadableDatabase 方法返回的并不总是仅仅读数据库对象。

//
一般来说该方法和getWriteableDatabase 方法的返回情况同样,

//
仅仅有在数据库仅开放仅仅读权限或磁盘已满时才会返回一个仅仅读的数据库对象。



    SQLiteDatabase db = helper.getWritableDatabase();

    //使用execSQL方法向表中插入数据

    db.execSQL("insert into hero_info(name,level) values('bb',0)");

    //使用insert方法向表中插入数据

    ContentValues values = new ContentValues();

    values.put("name", "xh");

    values.put("level", 5);

    //调用方法插入数据

    db.insert("hero_info", "id", values);

    //使用update方法更新表中的数据

    //清空ContentValues对象

    values.clear();

    values.put("name", "xh");

    values.put("level", 10);

    //更新xh的level 为10

    db.update("hero_info", values, "level = 5", null);

    //关闭SQLiteDatabase对象

    db.close();



}
 

//从数据库中查询数据

public String queryData(MySQLiteHelper myHelper){

String result = "";

//获得数据库对象

SQLiteDatabase db = myHelper.getReadableDatabase();

//查询表中的数据

Cursor cursor = db.query("hero_info", null, null, null, null, null, "id asc");

//获取name列的索引

int nameIndex = cursor.getColumnIndex("name");

//获取level列的索引

int levelIndex = cursor.getColumnIndex("level");

for (cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()) {

result = result + cursor.getString(nameIndex)+ "\t\t";

result = result + cursor.getInt(levelIndex)+"\n";

}

cursor.close();//关闭结果集

db.close();//关闭数据库对象

return result;

}

@Override

protected void onDestroy() {

SQLiteDatabase db = h.getWritableDatabase();//获取数据库对象

//删除hero_info表中全部的数据 传入1 表示删除全部行------>点击backbutton

db.delete("hero_info", "1", null);

super.onDestroy();

}

}

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQyNTUyNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

王立平--SQLite,SQLiteOpenHelper的简单应用的更多相关文章

  1. 王立平--java se的简单项目创建以及具体解释

    创建项目的简单步骤: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQyNTUyNw==/font/5a6L5L2T/fontsize/400/ ...

  2. 王立平--TableLayout

    效果: <?xml version="1.0" encoding="utf-8"?>  <TableLayout xmlns:android= ...

  3. 王立平--查看SQLite中的数据信息

    Eclipse菜单Window - Open Perspective - DDMS进入DDMS视图. 然后File Explorer View中依次展开路径/data/data/package_nam ...

  4. 【Win 10 应用开发】Sqlite 数据库的简单用法

    如果老周没记错的话,园子里曾经有朋友写过如何在 UWP 项目中使用 Sqlite数据库的文章.目前我们都是使用第三方封装的库,将来,SDK会加入对 Sqlite 的支持. 尽管目前 UWP-RT 库中 ...

  5. sqlite数据库之简单操作

    一 sqlite介绍 Sqlite是一种嵌入式数据库,类似于一个文件系统,是跟程序在一起的.跟mysql等数据库程序跟数据分离是不一样的. 应用场景:常用于保存本地配置,类似于本地文件系统,因此他内嵌 ...

  6. 王立平--android中的anim(动画)

    简单有用步骤: 1.新建anim目录. 2.在anim下新建xml文件, 3.在xml下编写自己须要动画. 简单样例: 给Imageview加入动画 public class MainActivity ...

  7. 王立平--WebView的缓存机制

    WebView的缓存能够分为页面缓存和数据缓存. 1.   页面缓存是指载入一个网页时的html.JS.CSS等页面或者资源数据. 这些缓存资源是因为浏览器的行为而产生.开发人员仅仅能通过配置HTTP ...

  8. 王立平-- Swift

    Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C.而却没有C的一些兼容约束.Swift採用了安全的编程模式和加入现代的功能来是的编程更加简单.灵活和有趣. 界面则基于 ...

  9. Access转Sqlite的最简单的方法(不需要DB Manager)

    在网上查了很多方法,大部分都是需要DB Manager,但是DB Manager这个牛逼保护机制做得好,没有免费的注册码可用.还好下面有另一个办法实现Access转Sqlite: 首先要下载SQLit ...

随机推荐

  1. JavaScript 单例,Hash,抛异常

    1. 单例 ECMA 5 版 记得以前写过几种单例实现,找不到了... function Singleton() { if (this.constructor.instance) { return t ...

  2. intellij idea console 乱码

    修改文件 位置:{用户目录}\{iedea对应版本}\{idea or idea64}.vmoptions 比如我要修改我的配置文件 C:\Users\kkblf\.IntelliJIdea2017. ...

  3. Java基础——二分法

    BinarySearch 二分法查找,顾名思义就是要将数据每次都分成两份然后再去找到你想要的数据,我们可以这样去想,二分法查找很类似与我们平时玩的猜价格游戏,当你报出一个价格时裁判会告诉你价格相对于真 ...

  4. axios在vue项目中的一种封装方法

    记录下之前领导封装的axios请求 npm install axios // 安装 单独写个文件配置axios,此处为request.js import axios from 'axios' //自定 ...

  5. MFC 程序 手写创建顺序

    MFC 程序 手写创建顺序 1.继承CWinApp类 覆盖 class CMyApp : public CWinApp { virtual BOOL InitInstance(); } BOOL CM ...

  6. (一)python条件语句和基本数据类型

    条件语句 语法一:if...else  if <条件成立>: 处理过程 else: 处理过程 语法二:if...elif...else if <条件1成立>: 处理过程1 el ...

  7. 【模板】51nod 1051 最大子矩阵和

    [题解] 二重循环枚举起始列和终止列,竖着往下加,转化为一个最大子段和问题,逐行累加即可. #include<cstdio> #include<cstring> #includ ...

  8. String replaceAll 正则注意事项及特殊用法(xjl456852原创)

    我们知道String replaceAll(参数a, 参数b) 参数a是需要些正则表达式的. 但是今天试了试,发现参数b也有一些其它特性. 查看源码后,发现有些特性是平时不怎么用的.下面我来介绍一下这 ...

  9. 【Codeforces 1102E】Monotonic Renumeration

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 会发现如果a[i]=a[j] 那么b[i]~b[j]都是相同的,等于b[i] 而b[i]等于b[i-1]+1或者b[i] 有两种可能 所以对于 ...

  10. 转载 - C++ - placement new

    出处:http://www.cnblogs.com/wanghetao/archive/2011/11/21/2257403.html 有关placement new                  ...