13 SQLiteOpenHelper SQLiteDatabase详解
创建数据库:
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();
- 用得到的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详解的更多相关文章
- 第7.13节 案例详解:Python类变量
第7.13节 案例详解:Python类变量 上节介绍了类变量的定义和使用方法,并举例进行了说明.本节将通过一个更完整的例子来说明. 一. 定义函数dirp def dirp(iter): ret ...
- java代码之美(13)--- Predicate详解
java代码之美(13)--- Predicate详解 遇到Predicate是自己在自定义Mybatis拦截器的时候,在拦截器中我们是通过反射机制获取对象的所有属性,再查看这些属性上是否有我们自定义 ...
- java代码(13) ---Predicate详解
Predicate详解 遇到Predicate是自己在自定义Mybatis拦截器的时候,在拦截器中我们是通过反射机制获取对象的所有属性,在查看这些属性上是否有我们自定义的UUID注解 如果有该注解,那 ...
- Jmeter查看结果树之查看响应的13种方法[详解]
查看结果树查看响应有哪几种方法,可通过左侧面板底部的下拉框选择 1.Text 查看结果树中请求的默认格式为text,会显示请求的取样器结果.请求.响应数据3个部分内容. 取样器结果: 默认Raw视图, ...
- 第 13 章 StringTable详解
目录 第 13 章 StringTable 1.String 的基本特性 1.1.String 概述 1.2.String 的基本特征 1.3.String 的底层结构 2.String 的内存分配 ...
- Java基础13:反射详解
本节主要介绍Java反射的原理,使用方法以及相关的技术细节,并且介绍了关于Class类,注解等内容. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech ...
- python标准库介绍——13 types 模块详解
== types 模块== ``types`` 模块包含了标准解释器定义的所有类型的类型对象, 如 [Example 1-86 #eg-1-86] 所示. 同一类型的所有对象共享一个类型对象. 你可以 ...
- 13、SparkContext详解
一.SparkContext原理 1.图解 二.SparkContext源码 1.TaskScheduler创建 ###SparkContext.scala // Create and start t ...
- 13.Python字符串详解(包含长字符串和原始字符串)
简单地理解,字符串就是“一串字符”,也就是用引号包裹的任何数据,比如“Hello,Charlie”是一个字符串,“12345”也是一个字符串. Python 要求,字符串必须使用引号括起来,可以使用单 ...
随机推荐
- ●POJ 1873 The Fortified Forest
题链: http://poj.org/problem?id=1873 题解: 计算几何,凸包 枚举被砍的树的集合.求出剩下点的凸包.然后判断即可. 代码: #include<cmath> ...
- hdu3567 八数码(搜索)--预处理
题意:为你两个状态,求a到b 的最小路径,要求字典序最小. 思路: 最开始想的是目标状态是变化的,所以打表应该不行,然后直接上A*,但是TLE了- -(瞬间无语) 然后看了下别人的思路,预处理出9个状 ...
- 选项卡js版封装
以下是封装函数: // id:最外边大盒的id名function tab(id,ev){ var oWrap = document.getElementById(id); ...
- 索引法则--LIKE以%开头会导致索引失效进而转向全表扫描(使用覆盖索引解决)
Mysql 系列文章主页 =============== 1 准备数据 1.1 建表 DROP TABLE IF EXISTS staff; CREATE TABLE IF NOT EXISTS st ...
- Python 头部 #!/usr/bin/python 和 #!/usr/bin/env 的区别
这个网址 https://www.cnblogs.com/scofi/p/4867851.html 讲述了Python 头部 #!/usr/bin/python 和 #!/usr/bin/env 的区 ...
- C# get 、set、索引器
get 与 set C#类的属性有公有属性(public)和私有属性(private).如果直接将一个属性声明为public,则该类的任意实例可以随意获取或修改该属性的值,很不安全..NET Fram ...
- ubuntu 卸载从源码安装的 emacs
由于配置问题想卸了重装. 解压并进入你的源码所在目录: ./configure sudo make uninstall Done Reference: http://askubuntu.com/que ...
- CentOS Linux上安装Oracle11g笔记
CentOS Linux上安装Oracle11g 到 otn.oracle.com 网站上下载 Linux版的oracle 11g 编辑 /etc/sysctl.conf : kernel.shmal ...
- Python中enumerate用法详解
enumerate()是python的内置函数.适用于python2.x和python3.xenumerate在字典上是枚举.列举的意思enumerate参数为可遍历/可迭代的对象(如列表.字符串)e ...
- R语言使用 multicore 包进行并行计算
R语言是单线程的,如果数据量比较大的情况下最好用并行计算来处理数据,这样会获得运行速度倍数的提升.这里介绍一个基于Unix系统的并行程序包:multicore. 我们用三种不同的方式来进行一个简单的数 ...