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. MySql学习笔记(三) —— 聚集函数的使用

    1.AVG() 求平均数 select avg(prod_price) as avg_price from products; --返回商品价格的平均值 ; --返回生产商id为1003的商品价格平均 ...

  2. HFS模板开发

    痉挛模板, 节, 符号 & 变量帮助需要更多帮助 吗?看看 下面这些链接-模板是模型痉挛用于构建 HTML 页面. -它分为几个部分, 每个部分描述最终 HTML 页面的一部分. -此模板必须 ...

  3. 网络编程 - socket实现多个连接处理

    #服务端import socket,osso_server=socket.socket()so_server.bind(("localhost",6969))so_server.l ...

  4. asp.net mvc,基于aop实现的接口访问统计、接口缓存等

    其实asp.net 上aop现有的框架应该蛮多的,比如静态注入式的PostSharp(新版本好像已经商业化了,旧版本又不支持.net4.0+),或者通过反射的(性能会降低). 本文则是通过mvc其中一 ...

  5. Django-报错解决方法

    无法使用Django新建项目:'django-admin.py’不是内部或外部命令找到site-packages/django/bin(如 D:\Program Files\Anaconda3\Lib ...

  6. String HDU 5672(双指针)

    String HDU 5672(双指针) 传送门 题意:一个字符串中找到所有拥有不少于k个不同的字符的子串. import java.io.*; import java.util.*; public ...

  7. THUSC2019滚粗记

    关于\(\mathrm{APIO}\)游记,它咕了... Day -1 \(\mathrm{\_tham}\)今天并没有准备给我们考试,所以机房充斥着过年的气息(雾 下午就要出发了,由于一些众所周知的 ...

  8. sublime3注册码

    TwitterInc User License EA7E 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA12C0 A37081C5 D0316412 4584D136 ...

  9. ceph rbd 入门

    1.一个现成的ceph cluster 参考之前写的ceph-deploy 部署ceph cluster 2.配置client与ceph cluster对接 在ceph cluster的管理节点上安装 ...

  10. MongoDB 数据文件备份与恢复

    备份与恢复数据对于管理任何数据存储系统来说都是非常重要的. 1.冷备份与恢复——创建数据文件的副本(前提是要停止MongoDB服务器),也就是直接copy MongoDB将所有数据都存储在数据目录下, ...