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. select count(1) 和 select count(*)的区别

    统计一个表T有多少行数据,通常写法是: 查询A:select count(*) from T 但也可以采用下面语句来查: 查询B:select count(1) from T 结果通常是一样的.那么二 ...

  2. 梦想CAD控件COM接口光栅图处理

    在CAD操作过程中,我们在设计绘图时,光栅图像也就是我们常说的图片,应用非常广泛,在CAD中可以直接插入光栅图像,并且可以对光栅图像进行裁剪.透明度调整等一些操作,在网页可以快速实现我们所需功能. 一 ...

  3. CentOS下安装微软雅黑字体

    CentOS下安装微软雅黑字体   微软雅黑下载地址:http://download.csdn.net/detail/u012547633/9796219 1.先从你本机 C:\Windows\Fon ...

  4. 网络编程 - 简单的socket例子

    1.客户端 #客户端import socketclient=socket.socket() #生成socket连接对象client.connect(("localhost",696 ...

  5. JPA 与 JDBC 的区别和基本用法

    JPA 概念 JPA(Java Persistence API)用于对象持久化的 API,是 Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层. 与 JDBC 的对 ...

  6. Docker 安装并定制 Nginx 服务器

    安装并定制 Nginx 1.查阅对应的官方文档,首先下载镜像文件: [spider@izwz9d74k4cznxtxjeeur9z local]$ sudo docker pull nginx [su ...

  7. 洛谷 1062 NOIP2006普及T4 数列

    [题解] 鲜活的水题..我们把数列换成k进制的,发现数列是001,010,011,100,101,110,111...,而第m项用k进制表示的01串刚好就是m的二进制的01串.于是我们预处理k的幂,把 ...

  8. E - Cricket Field

    Description   Once upon a time there was a greedy King who ordered his chief Architect to build a fi ...

  9. nginx+keepalived+consul 实现高可用集群

    继 负载均衡 之 nginx+consul+consul template,我这次将使用2台虚拟机,来做一个简单的双机负载均衡试验. 试验目标: 1. 当参加负载均衡的子节点服务,有任何其中一个或多个 ...

  10. Codeforces Round #240 (Div. 2) C Mashmokh and Numbers

    , a2, ..., an such that his boss will score exactly k points. Also Mashmokh can't memorize too huge ...