Android之数据库

1、DBAdapter类:?

?


1
package com.cnzcom.android.quickdial;

2

3 ?import android.content.ContentValues;

4 ?import android.content.Context;

5
import android.database.Cursor;

6
import android.database.SQLException;

7
import android.database.sqlite.SQLiteDatabase;

8
import android.database.sqlite.SQLiteOpenHelper;

9
import android.util.Log;

10

11
/**

12
*

13
* @author zhangjie

14
*

15
* 数据库相关操作的类

16
*/

17
public
class DBAdapter {

18
/**

19
* 数据库名

20
*/

21
private
static
final String DATABASE_NAME = "quickdial.db";

22

23
/**

24
* 数据表名

25
*/

26
private
static
final String DATABASE_TABLE = "quickdial";

27

28
/**

29
* 数据库版本

30
*/

31
private
static
final
int DATABASE_VERSION = 1;

32

33
/**

34
* key_id :主键

35
*/

36 @SuppressWarnings("unused")

37
private
static
final String KEY_ID = "key_id";

38

39
/**

40
* position :位置信息,表示数据是第几项

41
*/

42
private
static
final String POSITION = "position";

43

44
/**

45
* name :姓名

46
*/

47
private
static
final String NAME = "name";

48

49
/**

50
* phone_number :电话号码

51
*/

52
private
static
final String PHONE_NUMBER = "phone_number";

53

54
/**

55
* ip :是否ip播出

56
*/

57
private
static
final String IP = "ip";

58

59
/**

60
*

61
*/

62
private
static
final String DATABASE_CREATE =

63 "create table quickdial (key_id INTEGER PRIMARY KEY, "

64 + "position INTEGER, "

65 + "name TEXT, "

66 + "phone_number TEXT, "

67 + "ip INTEGER"

68 + ");";

69

70
/**

71
*

72
*/

73
private
final Context context;

74

75
/**

76
*

77
*/

78
private DatabaseHelper DBHelper;

79

80
/**

81
*

82
*/

83
private SQLiteDatabase db;

84

85
public DBAdapter(Context ctx) {

86 context = ctx;

87 DBHelper = new DatabaseHelper(context);

88

89

90 }

91

92
private
static
class DatabaseHelper extends SQLiteOpenHelper {

93
public DatabaseHelper(Context context) {

94
super(context, DATABASE_NAME, null, DATABASE_VERSION);

95 }

96

97 @Override

98
public
void onCreate(SQLiteDatabase db) {

99
// TODO Auto-generated method stub

100 db.execSQL(DATABASE_CREATE);

101 }

102

103 @Override

104
public
void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

105
// TODO Auto-generated method stub

106 db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);

107 onCreate(db);

108 }

109

110 }

111

112
/**

113
* 打开数据库

114
* @return

115
* @throws SQLException

116
*/

117
public SQLiteDatabase open() throws SQLException

118 {

119 db = DBHelper.getWritableDatabase();

120

121 Cursor cursor = getAll();

122

123
if(cursor.getCount() == 0) {

124

125 Log.e("数据库为空", "插入数据");

126
/**

127
* 先使用假数据初始化数据库

128
*/

129
for(int i = 0; i < 10; i++) {

130 insert(i, "", "", 0);

131 }

132 } else {

133 Log.e("数据库不为空", "读取数据");

134 }

135 cursor.close();

136

137
return db;

138 }

139

140
/**

141
* 关闭数据库

142
*/

143
public
void close()

144 {

145 DBHelper.close();

146 }

147

148
/**

149
* 向数据库中插入数据

150
*/

151

152
public
long insert(int position, String name, String phone_number, int ip) {

153

154 ContentValues initialValues = new ContentValues();

155 initialValues.put(POSITION, position);

156 initialValues.put(NAME, name);

157 initialValues.put(PHONE_NUMBER, phone_number);

158 initialValues.put(IP, ip);

159

160
return db.insert(DATABASE_TABLE, null, initialValues);

161 }

162

163
/**

164
* 删除数据,其实不是真正意义上的删除,而是将name = ""、phone_number = ""、ip = 0

165
*/

166
public
boolean delete(int position) {

167

168 ContentValues initialValues = new ContentValues();

169 initialValues.put(POSITION, position);

170 initialValues.put(NAME, "");

171 initialValues.put(PHONE_NUMBER, "");

172 initialValues.put(IP, 0);

173

174
return db.update(DATABASE_TABLE, initialValues, POSITION + "=" + position, null) > 0;

175

176
// return db.delete(DATABASE_TABLE, POSITION + "=" + position, null) > 0;

177 }

178

179
/**

180
* 更改数据

181
*/

182
public
boolean update(int position, String name, String phone_number, int ip) {

183

184 ContentValues initialValues = new ContentValues();

185
//initialValues.put(POSITION, position);

186 initialValues.put(NAME, name);

187 initialValues.put(PHONE_NUMBER, phone_number);

188 initialValues.put(IP, ip);

189

190
return db.update(DATABASE_TABLE, initialValues, POSITION + "=" + position, null) > 0;

191 }

192

193
public Cursor getAll() {

194

195 Cursor cur = db.query(DATABASE_TABLE,

196
null, null, null, null, null, null);

197
return cur;

198

199 }

200

201
public Cursor get(long rowId) throws SQLException {

202 Cursor cur = db.query(true, DATABASE_TABLE, new String[] {POSITION,

203 NAME,

204 PHONE_NUMBER,

205 IP},

206

207 POSITION + "=" + rowId, null, null, null, null, null);

208

209
if(cur != null) {

210 cur.moveToFirst();

211 }

212

213
return cur;

214 }

215

216 }

?

2、Activity中调用:

?

?


1
public DBAdapter m_DBAdapter;

2

3 m_DBAdapter = new DBAdapter(this);

4 m_DBAdapter.open();

时间: 2024-11-10 11:39:30

Android之数据库的相关文章

Android通讯录数据库介绍与基本操作(增删改查)

Android通讯录数据库介绍与基本操作(增删改查) 2014年2月21日 Android通讯录管理总结 这几天导师安排我一个任务就是研究一下Android通讯录获取联系人.通话记录.短信的方法,还有看看不同Android版本之间的异同是否能做到兼容之类的事情.Android通讯录这一块,我个人感觉是挺乱的,网上一堆关于查询本地数据库获取联系人的方法,但似乎都没有仔细说明数据有哪些重要的表,它们之间有什么联系.下面是本人查询资料总结的一下知识点,方便童鞋们以后用到. http://xys2891

android 本地数据库sqlite的封装

单机android   sqlite数据库的实现,这个数据库可与程序一起生成在安装包中 一.下载sqlite3.exe文件 二.运行 cmd 转到sqlite3.exe 所在目录  运行 sqlite3.exe 数据库名.db     然后会出现sqlite>的命令提示符 输入创建表的语句, create table 表名('列','列'...):(注意: 要在结束部分加  分号 )     此时会在sqlite3.exe 所在目录,出现所建数据库的文件 三.如果想在Android中运行的话,需

android 建数据库 SQLite 存储sd 卡或者内存

android 创建数据库调用SQLiteOpenHelper,一般不直接操作SQLiteDatabase . 是通过SQLiteOpenHelper来获取 public class DBOpenHelper extends SQLiteOpenHelper { private static final int VERSION = 1;// 定义数据库版本 private static final String PATH = Environment .getExternalStorageDire

Android中数据库的操作流程详细解释

Android中数据库的操作方法: 1.Android平台提供了一个数据库辅助类来创建或打开数据库.这个辅助类继承自SQLiteOpenHelper类.继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法. (1).onCreate(SQLiteDatabase db) : A.当数据库被首次创建时(用户初次使用软件时)执行该方法.一旦数据库存在就不会调用该方法了. B.仅仅生成辅助类(继承SQLiteOpenHelper类)对象的时候是不会调用该函数的,只有当调用辅助类

android 联系人数据库

联系人数据库学习 2011-10-31(这是android2.3上联系人的db) 简介 Android中联系人的信息都是存储在一个叫contacts2.db的数据库中.该数据库的路径是:/data/data/com.android.provider.contacts/databases/contacts2.db.如图1: 我们可以在cmd中通过adb命令把该文件拉出来(具体口令为:adb  pull/data/data/com.android.provider.contacts/database

android sqlite数据库操作

sqlite有一点不同于其他常见数据库,就是sqlite数据库是存成文件的,可以直接把该文件从手机里导出来,以文件的形式存在,然后放到电脑上查看. Android操作数据库有如下步骤: 1.继承SQLiteOpenHelper,实现里面的方法. public class MyDbHelper extends SQLiteOpenHelper {     public MyDbHelper(Context context) {         super(context, "db3", 

Android多媒体数据库之MediaStore研究

应网友要求,今天给大家讲android的多媒体数据库.MediaStore这个类是android系统提供的一个多媒体数据库,android 中多媒体信息都可以从这里提取.这个MediaStore包括了多媒体数据库的所有信息,包括音频,视频和图像,android把所有的多媒体数据库接口 进行了封装,所有的数据库不用自己进行创建,直接调用利用ContentResolver去掉用那些封装好的接口就可以进行数据库的操作了.今天我就介绍 一些这些接口的用法. 首先,要得到一个ContentResolver

Android SQLite数据库操作示例

SQLite介绍 SQLite是一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能.此外,它还是开源的,任何人都可以使用它. SQLite由以下几个组件组成:SQL编译器.内核.后端以及附件.SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试.修改和扩展SQLite的内核变得更加方便. SQLite支持的数据类型参考链接:http://blog.csdn.net/wzy_1988/article/details/36005947 Android在运行时(

Android下数据库操作——增删改查

Android下数据库第一种方式增删改查 1.创建一个帮助类的对象,调用getReadableDatabase方法,返回一个SqliteDatebase对象 2.使用SqliteDatebase对象调用execSql()做增删改,调用rawQuery方法做查询. 特点:增删改没有返回值,不能判断sql语句是否执行成功.sql语句手动写,容易写错 private MySqliteOpenHelper mySqliteOpenHelper;     public InfoDao(Context co

Android Sqlite数据库加密

Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个: 1. 对几个关键的字段使用加密算法,再存入数据库 2. 对整个数据库进行加密 SQLite数据库加密工具: 收费工具: SSE(SQLite Encryption Extension) 免费工具: SQLCipher SQLCipher使用: SQLCipher是完全开源的软件,提供256-bit AES加密 源码编译: 1. OpenSSL编译 SQLCipher源码编译需要依赖OpenSSL提供的lib