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. 【转】jvm类加载

    类加载机制 JVM把class文件加载的内存,并对数据进行校验.转换解析和初始化,最终形成JVM可以直接使用的Java类型的过程就是加载机制. 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命 ...

  2. 【Python-2.7】换行符和制表符

    在Python中换行符“\n”表示接下来的内容将会换到下一行显示,制表符“\t”表示下面的内容显示时在前面留出空白,如打印如下内容: Dear: I love you forever! 上面的一段话分 ...

  3. 6.15 分解IP地址

    问题:将一个IP地址字段分解到列中,考虑下面列出的IP地址: 111.22.3.4 要得到如下所示的查询结果: +-----+----+---+---+| a   | b  | c | d |+--- ...

  4. SDK _ 静态控件的使用

    静态控件的使用 静态控件主要区分两种使用方式:文本 \ 图片 在使用静态控件的时候,ID始终默认为 IDC_STATIC,需要进行更改 怎样通过可视化编程显示一张图片 需要添加一个位图资源 需要添加一 ...

  5. DropDownList 递归绑定分子公司信息

    /// <summary> /// 绑定下拉框 /// </summary> /// <param name="ddl">绑定控件名称</ ...

  6. 04JavaScript程序语句

    JavaScript程序语句 2.6程序控制流程 2.6.1选择结构 if <逻辑表达式> 语句 else 语句 if <逻辑表达式> { 语句组 } else { 语句组} ...

  7. impdp and docker install oracleXE

    docker oracle https://hub.docker.com/r/sath89/oracle-xe-11g/ docker run -d -p 8080:8080 -p 1521:1521 ...

  8. 向appstore提交app流程

    http://www.cocoachina.com/newbie/tutorial/2013/0508/6155.html http://blog.csdn.net/holydancer/articl ...

  9. tab下拉显示

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  10. 每日命令:(5)rm

    昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所 ...