- 浏览: 271022 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
tonytony3:
THANK YOU
Android多级树形菜单的实现 -
haiyang08101:
deleteNumber = "421f481e-7 ...
java对xml文件做增删改查 -
求求你帮帮我:
怎么把我的空格也当成节点处理了?
java对xml文件做增删改查 -
求求你帮帮我:
deleteNumber = "421f481e-7 ...
java对xml文件做增删改查 -
lpj13579:
多谢分享,学习学习
高仿小米盒子UI效果实现
SQLITE是android自带的标准数据库,它支持SQL语句,是一个轻量级的嵌入式数据库.
学习SQLITE首先需要了解一些知识点:
1. SQLiteDatabase
一个SQLiteDatabase的实例代表一个SQLite的数据库,通过SQLiteDatabase实例的一些方法,我们可以执行SQL语句,进行对数据库的增删改查操作。 数据库对于一个应用来说是私有的,并且在一个应用当中,名字也是唯一的。
2. SQLiteOpenHelper
这是一个抽象类。当在程序中调用这个类的方法getWritableDatebase()或者getReadableDatebase()方 法的时候,如果当时没有数据,那么android系统就会自动生成一个数据库。对于SQLiteOpenHelper我们通常需要继承它,并实现它里面的 3个函数
(1)onCreate
在数据库第一次生成的时候会调用这个方法,一般我们在这个方法里边生成数据库表
(2)onUpgrade
当数据库需要升级的时候,Android系统会自动调用这个方法,一般我们在这个方法里面删除数据库表,并建立新的数据库表。并且还可以根据应用需求进行其它操作。
(3)onOpen
这是当打开数据库时的回调函数,一般也不会用到。
下面来展示一下操作数据库的具体代码
public class ActivityMain extends Activity {
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;
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";
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
+
" text not null, " + BODY + " text not null " + ");";
System.out.print(sql);
Log.i("haiyang:createDB=",
sql);
db.execSQL(sql);
}
@Override
public void
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
}
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
prepareListener();
initLayout();
mOpenHelper = new
DatabaseHelper(this);
}
private void initLayout() {
button1 = (Button)
findViewById(R.id.button1);
button1.setOnClickListener(listener1);
button2 = (Button)
findViewById(R.id.button2);
button2.setOnClickListener(listener2);
button3 = (Button)
findViewById(R.id.button3);
button3.setOnClickListener(listener3);
button4 = (Button)
findViewById(R.id.button4);
button4.setOnClickListener(listener4);
button5 = (Button)
findViewById(R.id.button5);
button5.setOnClickListener(listener5);
}
private void prepareListener() {
listener1 = new
OnClickListener() {
public void
onClick(View v) {
CreateTable();
}
};
listener2 = new
OnClickListener() {
public void
onClick(View v) {
dropTable();
}
};
listener3 = new
OnClickListener() {
public void
onClick(View v) {
insertItem();
}
};
listener4 = new
OnClickListener() {
public void
onClick(View v) {
deleteItem();
}
};
listener5 = new
OnClickListener() {
public void
onClick(View v) {
showItems();
}
};
}
private void CreateTable() {
SQLiteDatabase db =
mOpenHelper.getWritableDatabase();
String sql = "CREATE TABLE " +
TABLE_NAME + " (" + TITLE
+
" text not null, " + BODY + " text not null " + ");";
Log.i("haiyang:createDB=",
sql);
try {
db.execSQL("DROP
TABLE IF EXISTS diary");
db.execSQL(sql);
setTitle("数据表成功重建");
} catch (SQLException e)
{
setTitle("数据表重建错误");
}
}
private void dropTable() {
SQLiteDatabase db =
mOpenHelper.getWritableDatabase();
String sql = "drop table " +
TABLE_NAME;
try {
db.execSQL(sql);
setTitle("数据表成功删除:"
+ sql);
} catch (SQLException e)
{
setTitle("数据表删除错误");
}
}
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', 'android的发展真是迅速啊');";
try {
Log.i("haiyang:sql1=",
sql1);
Log.i("haiyang:sql2=",
sql2);
db.execSQL(sql1);
db.execSQL(sql2);
setTitle("插入两条数据成功");
} catch (SQLException e)
{
setTitle("插入两条数据失败");
}
}
private void deleteItem() {
try {
SQLiteDatabase
db = mOpenHelper.getWritableDatabase();
db.delete(TABLE_NAME,
" title = 'haiyang'", null);
setTitle("删除title为haiyang的一条记录");
} catch (SQLException e) {
}
}
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)
+ " 条记录");
}
}
在上述代码中
DataBaseHelper类继承了SQLieOpenHelper类,并且重写了onCreate和onUpgrade方法。
在onCreate方法中我们首先构造了一条SQL语句,然后调用了db.execSQL(sql)执行SQL语句。生成了一个表
因为目前我们还不需要升级数据库,所以我们在onUpgrade()函数里面没有执行任何操作。
==============================================================================================
下面对应的就是增删改查方法
主要说下查的方法:
如前面知识点所说,先创建一个SQLiteDatebase的对象,得到一个可写的数据库.
Sring col[]={TITLE,BODY};
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
这条语句将查询到的数据放到一个Cursor中。这个Cursor中封装了这个数据表TABLE_NAME当中的所有条列。下面具体说下query()方法:
第一个参数是数据库里边表的名字。
第二个参数是我们想要返回数据包含的列的信息。如上面代码所示 我们把列名存放在名为col的数组里
第三个参数为selection,相当于SQL语句的where部分,如果想返回所有的数据,那么就直接设置为null.
第四个参数为selectionArgs.在selection部分,有可能用到"?",那么在selectionArgs定义的字符串会代替selection中的"?".
第五个参数为groupBy。定义查询出来的数据是否分组,如果为null,则说明不需要分组。
第六个参数为having。相当于SQL语句当中的having部分。
第七个参数为orderBy。这个就是排序。
最后 Integer num=cur.getCount()语句通过getCount()方法,可以得到Cursor当中数据的个数。
对于Cursor的理解:
Cursor本身是指针的意思。在android中是一个非常有用的接口,通过Cursor我们可以对从数据库查询出来的结果集进行随机的读写访问。
一个简单的对数据库操作的demo介绍完了,最后需要说明的是 在Android的设计哲学里鼓励开发者使用内部类,这样不但使用方便,而且执行效率也高。
发表评论
-
Android 三大图片加载框架比较
2016-11-30 10:31 10781.哪三大图片加载框架? 1) Pi ... -
Java Calendar 类的时间操作
2016-06-01 21:02 661ava Calendar 类时间操作,这也许是创建日历和管理 ... -
获取电脑ip,所在省份城市
2014-08-27 09:45 676调用了腾讯的ip接口(http://fw.qq.com ... -
获取Android签名证书的sha1值
2014-08-23 23:14 657前言:今天开始研 ... -
java中Keytool的使用总结
2014-08-23 22:40 557J2SDK提供了keytool命令行工具,可以根据指定的参数 ... -
Java基础——Java语法基础(3)
2014-06-19 10:13 565程序控制流程 1、顺序结构 按顺序执行 2、i ... -
Java基础——Java语法基础(1)
2014-06-19 10:11 796Java代码基本格式 Java ... -
android MD5校验码的生成与算法实现
2014-06-17 10:58 880在Java中,java.security.Mes ... -
java中的字符串分割函数 split
2014-06-06 15:01 688Java中的我们可以利用sp ... -
java对xml文件做增删改查
2014-06-04 20:40 1834package com.wss; import jav ... -
获取网络的json文件 Gson解析json文件
2013-11-07 16:21 522/** * 获取网络的json文件 * @pa ... -
Java获取文件类型Mime Type的各种方法
2013-09-16 15:46 1138使用 javax.activation.MimetypesF ... -
Java栈与堆
2013-06-20 22:18 9191. 栈(stack)与堆(heap)都 ... -
Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead.
2013-05-02 12:01 692解决Android requires compiler co ... -
java创建文件和目录
2013-04-25 10:30 599创建文件和目录的关键技术点如下: 1、File类的cr ... -
iava创建文件和目录
2013-04-24 19:42 792创建文件和目录的关键技术点如下: 1、File类的cr ... -
Java程序发送邮件的两种方法
2013-01-25 10:57 1867前一段时间我在博客中发表过Java接收解析邮件的程序 ... -
SharedPreferences保存数据
2013-01-24 15:09 882package com.test; import ja ... -
java 把logcat日志保存到SD里
2013-01-22 20:21 1029private void saveLogcat(){ ... -
Android开发系列:查看LogCat日志
2013-01-19 13:06 3441LogCat日志 1. Window & ...
相关推荐
android数据库SQLite学习笔记.pdf
总结来说,这个基于Android的个人日记本程序巧妙地融合了SQLite数据库、Java编程和Android UI设计,展示了Android应用开发的基本流程和核心技巧。通过学习和实践此类项目,开发者不仅可以掌握Android应用开发的基础...
在Android开发中,SQLite是一个非常重要的数据存储工具,它是一个轻量级的、无服务器模式的关系型数据库。SQLite被广泛应用于移动设备,如Android系统,因为它具有诸多优势。以下是关于SQLite在Android中使用的详细...
Android学习笔记-SQLite介绍-以及使用Sqlite-进行数据库的创建-完成数据.pdf
以上就是关于Android数据库操作及实现个人笔记应用的基本步骤。这个例子中的源码提供了完整的实现,对初学者来说是很好的学习材料。通过实践这个项目,开发者能够更深入地理解Android数据库操作,以及如何将这些技术...
总的来说,Android中的SQLite3数据库操作主要通过SQLiteOpenHelper和SQLiteDatabase这两个类来完成,它们提供了创建、升级数据库,执行SQL语句,以及对查询结果进行操作的功能。理解并熟练掌握这些API是Android应用...
本资源"android日记系统源码(数据库的基本操作).rar"提供了这样一个实例,让我们深入理解Android平台上SQLite数据库的使用,包括创建、查询、插入、更新和删除等基本操作。以下将详细阐述这些关键知识点。 1. **...
本项目名为"Android-笔记一款以sqlitedatabase为数据库采用MVP架构的轻便易用的笔记app",它是一个典型的Android应用示例,旨在展示如何结合SQLite数据库和Model-View-Presenter(MVP)架构模式来创建一个功能完善的...
《Android学习笔记》 在移动应用开发领域,Android操作系统占据着重要的地位,为开发者提供了丰富的API和工具,使得创建各种应用程序变得可能。本压缩包文件包含了一位学习者从第一天到第五天,以及一个特定项目...
Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...
《黑马程序员Android学习笔记》是一份专为初学者设计的详尽教程,旨在帮助那些希望踏入安卓开发领域的人员快速掌握核心知识。这份笔记涵盖了从基础到进阶的多个主题,帮助学习者系统地理解Android应用开发的过程。 ...
Android学习笔记(一)——创建第一个Android项目 ...Android学习笔记(十三)——数据存储(LitePal操作数据库) Android学习笔记(十四)——内容提供器 Android学习笔记(十五)——侧滑容器(ViewPager) ......
总之,Android SQLite笔记涵盖了从基础的SQLite数据库操作到更高级的ORM工具 LitePal的使用。通过学习这些知识点,你不仅可以掌握如何在Android应用中管理本地数据,还能了解如何利用Gson和LitePal简化数据处理。...
根据给定的信息,我们可以从Java和Android学习笔记中提取出一系列重要的知识点,下面将逐一进行详细解释。 ### Java基础知识 #### 1. 命令行基础操作 - **`javacmd`**: 这个命令是Java命令行工具的一部分,用于...
在本篇“xamarin学习笔记A10”中,我们将深入探讨如何在Xamarin.Android项目中集成和操作SQLite数据库。 首先,我们需要安装必要的NuGet包。在Visual Studio或Visual Studio for Mac中,可以右键点击项目,选择...
Android学习笔记全全整理,是针对想要深入理解并掌握Android开发技术的学习者们的一份宝贵资源。这份笔记涵盖了从基础到高级的多个方面,旨在帮助读者建立起完整的Android知识体系。以下将详细介绍其中可能包含的...
这篇Android学习笔记主要涵盖了从第五章到第十三章的内容,是Android开发者或对Android系统感兴趣的初学者的重要参考资料。笔记详细解读了Android应用开发的核心概念和技术,旨在帮助读者深入理解并掌握Android开发...