Android(OPhone) 学习笔记 - SQLite

本文我们来实现一下Android内置SQLite数据库,该数据库对于创建它们的包套件是私有的,而且数据库不应该用来存贮文件。SQLite是一个轻量级的软件库,体积大小只用几千字节,一些SQL的指令只是部分支持,例如:ALTER、TABLE。

一、界面设置
首先设置界面如下,这里需要说明一下,完成界面描绘之后,可以不编写响应代码先运行,这样可以保证main.xml的无误。笔者曾经重复命名了两个button后直接编写响应代码,结果编写代码时发现总是出错,再看R.java里面一直没有id的class,导致了时间和精力的浪费。
button.GIF

二、常用对象方法
在程序中,我们实现若干基本操作,删除的过程中包括查找,显示的过程中包括遍历。在这个例子中,需要引入若干的以前没用到的库:android.database.sqlite.*;android.util.Log;android.content.Context;android.database.*;
参考 http://www.ophonesdn.com/forum/thread.do?topicId=eb0e8fe9-8898-11de-ba0c-e1dca3c51327&forumId=17 的例子(不过该例子有一些小问题),定义如下变量和常量
OnClickListener listener1 = null;
OnClickListener listener2 = null;
OnClickListener listener3 = null;
OnClickListener listener4 = null;
OnClickListener listener5 = null;
Button button1;
Button button2;
Button button3;
Button button4;
Button button5;
TextView tv;
DatabaseHelper mOpenHelper;
private static final String DATABASE_NAME = "dbForTest.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "diary";
private static final String TITLE = "title";
private static final String BODY = "body";

在create中编写如下代码:
cre_17695266474a92616ccedf3.GIF

在设置好界面之后,准备好按钮响应:
lis.GIF

三、数据库初始化
在create的最后一行,创建了DatabaseHelper的一个对象,下面我们来看看这个对象是由什么构成的。
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE + " " + BODY + " " + ");";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}

四、常用数据库操作
1.创建表
private void CreateTable() {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();//获得一个SQLiteDatabase实例
String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE + " " + BODY + " " + ");";
try {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
db.execSQL(sql);
setTitle("数据表成功重建");
} catch (SQLException e) {
setTitle("数据表重建错误");
}
}

2.删除表
private void dropTable() {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
String sql = "drop table " + TABLE_NAME;
try {
db.execSQL(sql);
setTitle("数据表成功删除:" + sql);
} catch (SQLException e) {
setTitle("数据表删除错误");
}
}

3.插入数据
private void insertItem() {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
String sql1 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY
+ ") values('haiyang', 'android的发展真是迅速啊');";
String sql2 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY
+ ") values('icesky', 'Ophone的发展真是迅速啊');";
try {
db.execSQL(sql1);
db.execSQL(sql2);
setTitle("插入两条数据成功");
} catch (SQLException e) {
setTitle("插入两条数据失败");
}
}

4.删除数据
private void deleteItem() {
try {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
db.delete(TABLE_NAME, " title = 'haiyang'", null);
setTitle("删除title为haiyang的一条记录");
} catch (SQLException e) {
}
}

5.显示记录
流程为:获取数据库实例,设置指针,显示记录数,移动指针,遍历并显示数据。
private void showItems() {
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
String col[] = { TITLE, BODY };
Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
Integer num = cur.getCount();
setTitle(Integer.toString(num) + " 条记录");
cur.moveToFirst();
tv.setText("");
while (cur.getPosition()!=cur.getCount())
{
tv.append(Integer.toString(cur.getPosition())+" , "+cur.getString(cur.getColumnIndex("title"))+" , "+cur.getString(cur.getColumnIndex("body"))+"\n");
cur.moveToNext();
}
}

五、执行结果
通过多次点击插入记录,显示结果如下:
sq.GIF

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值