创建数据库:

1. 创建一个类继承SQLiteOpenHelper
2. 创建继承对象 new SQLiteOpenHelper()
3. 用创建的对象获取可写或者可读的SQLiteDatabase
4. 用得到的SQLiteDatabase执行sql语句
* 手动写sql语句
* 调用内置的sql语句API

  • 步骤1详解:

    *一个继承的SQLiteOpenHelper类

    ```java
    package com.fmy.sql.db; import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log; public class MyOpenHelper extends SQLiteOpenHelper { static final String DPNAME = "info.db";
    static final int VERSION = 1; public MyOpenHelper(Context context, String name, CursorFactory factory, int version) {
    super(context, name, factory, version);
    } public MyOpenHelper(Context context) {
    super(context, DPNAME, null, VERSION);
    } @Override
    public void onCreate(SQLiteDatabase db) {
    Log.e("fmy", "被创建了");
    } @Override
    public void onOpen(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    super.onOpen(db);
    Log.e("fmy", "数据库被打开了");
    } @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } ```

  • 步骤2详解:

    *创建继承对象 new SQLiteOpenHelper()
MyOpenHelper myOpenHelper = new MyOpenHelper(this);

  • 步骤3详解:

    *用创建的对象获取可写或者可读的SQLiteDatabase
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
  1. 用得到的SQLiteDatabase执行sql语句

    • 手动写sql语句执行

package com.fmy.sql;
import com.fmy.sql.db.MyOpenHelper; import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); } public void create(View v) {
MyOpenHelper myOpenHelper = new MyOpenHelper(this);
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
Log.e("fmy", "创建表");
db.execSQL("create table if not exists person(_id INTEGER primary key autoincrement,name varchar,age int)");
db.close();
myOpenHelper.close();
} public void insert(View v) {
MyOpenHelper myOpenHelper = new MyOpenHelper(this);
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
Log.e("fmy", "创建表");
String sql = "insert into person (name,age) values()";
for (int i = 0; i < 50; i++) {
db.execSQL("insert into person (name,age) values(" + "'张三" + i + "'" + "," + i + ")");
Log.e("fmy", "创建表");
}
db.close();
myOpenHelper.close();
} public void update(View v) {
MyOpenHelper myOpenHelper = new MyOpenHelper(this);
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
Log.e("fmy", "跟新表");
String sql = "UPDATE person SET name = '李四' WHERE _id=1";
db.execSQL(sql);
db.close();
myOpenHelper.close();
} public void delete(View v) {
MyOpenHelper myOpenHelper = new MyOpenHelper(this);
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
Log.e("fmy", "创建表");
String sql = "DELETE FROM person WHERE _id=2";
db.execSQL(sql);
db.close();
myOpenHelper.close();
} public void select(View v) {
Log.e("fmy", "查询");
MyOpenHelper myOpenHelper = new MyOpenHelper(this);
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
String sql = "select *from person";
Cursor cursor = db.rawQuery(sql,null);
while (cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.e("fmy", "查询"+name);
}
db.close();
myOpenHelper.close();
} } ```
* API 增删改查 ```java
package com.fmy.dbapi; import com.fmy.dbapi.db.MyOpenHelper; import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); } public void create(View v) {
MyOpenHelper myOpenHelper = new MyOpenHelper(this);
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
Log.e("fmy", "创建表");
db.execSQL("create table if not exists person(_id INTEGER primary key autoincrement,name varchar,age int)");
db.close();
myOpenHelper.close();
} public void insert(View v) {
MyOpenHelper myOpenHelper = new MyOpenHelper(this);
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
Log.e("fmy", "插入表");
String sql = "insert into person (name,age) values()"; ContentValues value = new ContentValues(); for (int i = 0; i < 50; i++) {
value.put("name", "张三" + i);
long insert = db.insert("person", null, value);
Log.e("fmy", "插入表" + insert);
}
db.close();
myOpenHelper.close();
} public void update(View v) {
MyOpenHelper myOpenHelper = new MyOpenHelper(this);
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("name", "李四");
int update = db.update("person", values, "_id=?", new String[] { "1" });
Log.e("fmy", "跟新表" + update);
db.close();
myOpenHelper.close();
} public void delete(View v) {
MyOpenHelper myOpenHelper = new MyOpenHelper(this);
SQLiteDatabase db = myOpenHelper.getReadableDatabase();
Log.e("fmy", "创建表");
db.delete("person", "_id=?", new String[] { "2" });
db.close();
myOpenHelper.close();
} public void select(View v) {
Log.e("fmy", "查询");
MyOpenHelper myOpenHelper = new MyOpenHelper(this);
SQLiteDatabase db = myOpenHelper.getReadableDatabase(); Cursor cursor = db.query("person", null, null, null, null, null, null, "1,2");
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.e("fmy", "查询" + name);
}
db.close();
myOpenHelper.close();
} }

13 SQLiteOpenHelper SQLiteDatabase详解的更多相关文章

  1. 第7.13节 案例详解:Python类变量

    第7.13节 案例详解:Python类变量 上节介绍了类变量的定义和使用方法,并举例进行了说明.本节将通过一个更完整的例子来说明. 一.    定义函数dirp def dirp(iter): ret ...

  2. java代码之美(13)--- Predicate详解

    java代码之美(13)--- Predicate详解 遇到Predicate是自己在自定义Mybatis拦截器的时候,在拦截器中我们是通过反射机制获取对象的所有属性,再查看这些属性上是否有我们自定义 ...

  3. java代码(13) ---Predicate详解

    Predicate详解 遇到Predicate是自己在自定义Mybatis拦截器的时候,在拦截器中我们是通过反射机制获取对象的所有属性,在查看这些属性上是否有我们自定义的UUID注解 如果有该注解,那 ...

  4. Jmeter查看结果树之查看响应的13种方法[详解]

    查看结果树查看响应有哪几种方法,可通过左侧面板底部的下拉框选择 1.Text 查看结果树中请求的默认格式为text,会显示请求的取样器结果.请求.响应数据3个部分内容. 取样器结果: 默认Raw视图, ...

  5. 第 13 章 StringTable详解

    目录 第 13 章 StringTable 1.String 的基本特性 1.1.String 概述 1.2.String 的基本特征 1.3.String 的底层结构 2.String 的内存分配 ...

  6. Java基础13:反射详解

    本节主要介绍Java反射的原理,使用方法以及相关的技术细节,并且介绍了关于Class类,注解等内容. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech ...

  7. python标准库介绍——13 types 模块详解

    == types 模块== ``types`` 模块包含了标准解释器定义的所有类型的类型对象, 如 [Example 1-86 #eg-1-86] 所示. 同一类型的所有对象共享一个类型对象. 你可以 ...

  8. 13、SparkContext详解

    一.SparkContext原理 1.图解 二.SparkContext源码 1.TaskScheduler创建 ###SparkContext.scala // Create and start t ...

  9. 13.Python字符串详解(包含长字符串和原始字符串)

    简单地理解,字符串就是“一串字符”,也就是用引号包裹的任何数据,比如“Hello,Charlie”是一个字符串,“12345”也是一个字符串. Python 要求,字符串必须使用引号括起来,可以使用单 ...

随机推荐

  1. ●BZOJ 3527 [Zjoi2014]力

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3527 题解: FFT求卷积. $$\begin{aligned}E_i&=\frac ...

  2. poj 1741 树的点分治(入门)

    Tree Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 18205   Accepted: 5951 Description ...

  3. P1837 单人纸牌_NOI导刊2011提高(04)

    题目描述 单人纸牌游戏,共36张牌分成9叠,每叠4张牌面向上.每次,游戏者可以从某两个不同的牌堆最顶上取出两张牌面相同的牌(如黑桃10和梅花10)并且一起拿走.如果最后所有纸牌都被取走,则游戏者就赢了 ...

  4. [POJ2406]字符串的幂

    题目描述] 对于给定的两个字符串a,b,我们定义a*b是将把它们连接在一起形成的字符串.例如,若a="abc",b="def",则a*b="abcde ...

  5. final、finally与finalize的区别

    1. final  在java中,final可以用来修饰类,方法和变量(成员变量或局部变量).下面将对其详细介绍. 1.1 修饰类 当用final修饰类的时,表明该类不能被其他类所继承.当我们需要让一 ...

  6. Mysql--七种 Join 查询

    Mysql 系列文章主页 =============== 1 准备数据 1.1 建立 Employee 表 DROP TABLE IF EXISTS employee; CREATE TABLE IF ...

  7. 初识 Runtime

    前言 之前在看一些第三方源码的时候,时不时的能碰到一些关于运行时相关的代码.于是乎,就阅读了一些关于运行时的文章,感觉写的都不错,写此篇文章为了记录一下,同时也重新学习一遍. Runtime简介 Ru ...

  8. Java Socket通信代码片

    package zhang; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOExcept ...

  9. python笔记八(切片)

    一.切片 首先我们要记得在Python中可以用于切片的对象有 列表.元组.字符串. 切片操作就是直接从列表.元组或字符串中,选择出我们想要的内容,这些操作非常简洁实用. >>> L ...

  10. 作业02-Java基本语法与类库

    1. 本周学习总结 以几个关键词描述本周的学习内容.并将关键词之间的联系描述或绘制出来. 原则:少而精,自己写.即使不超过5行也可,但请一定不要简单的复制粘贴. 2. 书面作业 1. String-使 ...