android中sqlite数据库的基本使用和添加多张表
看了很多关于android使用sqlite数据库的文章,很多都是介绍了数据库的建立和表的建立,而表通常都是只建立一张,而实际情况我们用到的表可能不止一张,那这种情况下我们又该怎么办呢,好了,下面我教大家如何在sqlite数据库中建立多张表。
首先是如何建立数据库和表:
建立一个类继承SQLiteOpenHelper,即:
public class ReaderOpenHelper extends SQLiteOpenHelper
然后添加构造方法:
public ReaderOpenHelper(Context context) {
super(context, "people.db", null, 1);
}
people.db是数据库名字,1是数据库版本。
然后在该类实现以下两个方法:

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table readers(renumber integer primary key,rename text,retype text,reage text,rephone text,usename integer,password integer,createtime text)");
db.execSQL("create table books(booknumber integer primary key,bookname text,booktype text,bookeditor text,intime text,incounts integer)");
}

db.execSQL的作用是执行SQL语句,create table readers是创建一个叫readers的表,括号里就是各个字段名和值类型。
这里创建了两张表。另一张叫books
继续实现:

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("drop if table exists readers");
db.execSQL("drop if table exists books");
onCreate(db);
}

执行Sql语句"drop if table exists 表名"
这样你的sqlite数据库和两张表就创建完成了。
接下来再建一个数据库manager类,如:
public class ReaderManager
添加一个构造方法
public ReaderManager(Context conetxt) {
this.context = context;
readerOpenHelper = new ReaderOpenHelper(conetxt);
}
然后添加表的操作方法:

package com.zhou.db; import java.util.ArrayList;
import java.util.List; import com.zhou.utils.Books;
import com.zhou.utils.Reader; import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log; public class ReaderManager {
ReaderOpenHelper readerOpenHelper;
Context context; public ReaderManager(Context conetxt) {
this.context = context;
readerOpenHelper = new ReaderOpenHelper(conetxt);
} // 增加读者
public void addSQL(Reader reader) {
SQLiteDatabase db = null;
try {
db = readerOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("renumber", reader.getReNumber());
values.put("rename", reader.getName());
values.put("retype", reader.getSex());
values.put("reage", reader.getAge());
values.put("rephone", reader.getPhoneNumber());
values.put("createtime", reader.getCreateTime());
values.put("usename", reader.getUseName());
values.put("password", reader.getPassword());
db.insert("readers", null, values);
} catch (Exception e) {
// TODO: handle exception
} finally {
db.close();
}
} // 增加图书
public void bookAddSQL(Books book) {
SQLiteDatabase db = null;
try {
db = readerOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("booknumber", book.getBookNumber());
values.put("bookname", book.getBookName());
values.put("booktype", book.getBookType());
values.put("bookeditor", book.getBookEditer());
values.put("intime", book.getInTime());
values.put("incounts", book.getCount());
db.insert("books", null, values);
} catch (Exception e) {
// TODO: handle exception
} finally {
db.close();
}
} // 读者查询
public List<Reader> selectSQL() {
List<Reader> list = new ArrayList<Reader>();
SQLiteDatabase db = null;
// 获取一个光标对象
Cursor cursor = null;
try {
db = readerOpenHelper.getReadableDatabase();
cursor = db.query("readers", null, null, null, null, null, null);
Reader reader = null;
while (cursor.moveToNext()) {
reader = new Reader();
reader.setReNumber(cursor.getInt(cursor
.getColumnIndex("renumber"))); reader.setName(cursor.getString(cursor.getColumnIndex("rename")));
reader.setSex(cursor.getString(cursor.getColumnIndex("retype")));
reader.setAge(cursor.getString(cursor.getColumnIndex("reage")));
reader.setPhoneNumber(cursor.getString(cursor
.getColumnIndex("rephone")));
reader.setCreateTime(cursor.getString(cursor
.getColumnIndex("createtime")));
reader.setUseName(cursor.getInt(cursor
.getColumnIndex("usename")));
reader.setPassword(cursor.getInt(cursor
.getColumnIndex("password")));
list.add(reader);
}
} catch (Exception e) {
// TODO: handle exception
} finally {
cursor.close();
db.close();
} return list;
} // 图书查询
public List<Books> bookSelectSQL() {
List<Books> list = new ArrayList<Books>();
SQLiteDatabase db = null;
// 获取一个光标对象
Cursor cursor = null;
try {
db = readerOpenHelper.getReadableDatabase();
cursor = db.query("books", null, null, null, null, null, null);
Books book = null;
while (cursor.moveToNext()) {
book = new Books();
book.setBookNumber(cursor.getInt(cursor
.getColumnIndex("booknumber")));
book.setBookName(cursor.getString(cursor
.getColumnIndex("bookname")));
book.setBookType(cursor.getString(cursor
.getColumnIndex("booktype")));
book.setBookEditer(cursor.getString(cursor
.getColumnIndex("bookeditor")));
book.setInTime(cursor.getString(cursor.getColumnIndex("intime")));
book.setCount(cursor.getInt(cursor.getColumnIndex("incounts")));
Log.d("TAGG", cursor.getString(cursor.getColumnIndex("intime")));
list.add(book);
}
} catch (Exception e) {
// TODO: handle exception
} finally {
cursor.close();
db.close();
} return list;
} // 读者删除
public void deleteSQL(final long id) {
SQLiteDatabase db = null;
try {
db = readerOpenHelper.getWritableDatabase();
db.delete("readers", "renumber=" + id, null);
} catch (Exception e) { } finally {
db.close();
}
} // 读者更新 public void updateData(int id, String name, String sex, String age,
String phoneNumber, int password) { SQLiteDatabase db = null;
try {
db = readerOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("rename", name);
values.put("retype", sex);
values.put("reage", age);
values.put("rephone", phoneNumber);
values.put("password", password);
db.update("readers", values, "renumber=" + id, null);
} catch (Exception e) {
// TODO: handle exception
} finally {
db.close();
} } // public long getCount() {
//
// Cursor cursor = null;
// long count = 0;
// SQLiteDatabase db = null;
// try {
// db = readerOpenHelper.getWritableDatabase();
// cursor = db.query("readers", null, null, null, null, null, null);
//
// if (null != cursor) {
// count = cursor.getCount();
// cursor.close();
// }
// } catch (Exception e) {
// } finally {
// db.close();
// }
// return count;
// } }
android中sqlite数据库的基本使用和添加多张表的更多相关文章
- Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...
- Android中SQLite数据库小计
2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...
- 我的Android六章:Android中SQLite数据库操作
今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...
- Android 中 SQLite 数据库的查看
当 SQLite 数据库创建完成后,如何查看数据库的内容呢?如果直接使用 File Explorer 查看,最多只能看到 database 目录下出现了一个 BookStore.db 文件,Book ...
- Android中Sqlite数据库多线程并发问题
最近在做一个Android项目, 为了改善用户体验,把原先必须让用户“等待”的过程改成在新线程中异步执行.但是这样做遇到了多个线程同时需要写Sqlite数据库,导致操作数据库失败. 本人对Java并不 ...
- Android中SQLite数据库操作(2)——SQLiteOpenHelper类
如果开发者对SQL语法不熟悉,我要告诉你一个好消息,Android提供了一个SQLiteOpenHelper类. 在实际项目中很少使用SQLiteDatabase的方法(请看:http://blog. ...
- Android中Sqlite数据库进行增删改查
今天这篇文章写Sqlite数据库,通过一个小案例来完整讲一下数据库常见的CRUD操作. 先对知识点总结: SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHel ...
- Android中SQLite数据库操作(2)——使用SQLiteDatabase提供的方法操作数据库
如果开发者对SQL语法不熟,甚至以前从未使用过任何数据库,Android的SQLiteDatabase提供了insert.update.delete或query语句来操作数据库. 一.insert方法 ...
- Android 开发中 SQLite 数据库的使用
SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, ...
随机推荐
- JAVA基础知识|进程与线程
一.什么是进程?什么是线程? 操作系统可以同时支持多个程序的运行,而一个程序可以狭义的认为就是一个进程.在一个进程的内部,可能包含多个顺序执行流,而每个执行流就对应一个线程. 1.1.进程 进程:是计 ...
- python中heapq对dict进行排序
问题: 想从以下形式的dict中取value最大的2个key-value的key dict_num_num = {0: 0.07374631268436578, 1: 0.16307692307692 ...
- Sql中truncate,delete以及drop的比较
相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. 不同点: 1. t ...
- wan口的ip是干什么用的
wan口的ip是外网的ip,属于公网的ip.主要用于外网的识别,WAN口主要用于连接外部网络,如ADSL.DDN.以太网等各种接入线路:而LAN口用来连接家庭内部网络,主要与家庭网络中的交换机.集线器 ...
- centos安装tidy扩展
wget http://pecl.php.net/get/tidy-1.2.tgztar -xvzf tidy-1.2.tgzcd tidy-1.2/usr/local/php/bin/phpize. ...
- linux rz sz替代方案
SFTP是基于SSH的文件传输协议,与ZMODEM相比具有更加安全且更为快速的文件传输功能. 如何利用SFTP接收文件: 1. 在本地提示以sftp命令登陆拟要接收文件的主机.Xshell:\> ...
- 限流保护——nginx限流模块
1.限制请求次数——limit_req_zone模块 a.意义:limit_req_zone 表示限制单位时间内的请求数,即速率限制,采用的漏桶算法 a.在 conf/nginx.conf 配置文件中 ...
- ssl证书泛域名
certbot certonly -d *.example.com --manual --preferred-challenges dns --server https://acme-v02.api. ...
- java 中 this 和 super 说明及在构造器中super()和this()相互调用执行顺序
this this 表示当前对象 使用上细分的话,this有 this. 和this()的使用情况 ,下面我们开始细撸 this . 使用场景一: 在成员方法中,this.变量名 指带当前对象的变量, ...
- Docker一
Docker 简介一 背景开发和运维之间因为环境不同而导致的矛盾集群环境下每台机器部署相同的应用DevOps(Development and Operations) 简介 Docker是一个开源的应用 ...