在程序里面需要保存很多正常人脑袋都记不住的很多数据的时候,正常人都会想用到一个可以帮我们记忆数据的工具,毫无疑问数据库在此时显得尤为重要。android里面集成了sqlite数据库,很多桌面程序都是用的sqlite,比如firefox的数据库,主要因为体积小,这里说的小是跟微软的sql和orcal比较。
建库建表的过程:继承自SQLiteOpenHelper这个类,名字很形象,数据库的帮助类,意思就是这个类会帮你做一些事情,如果想自己动手最好的办法是去读源码。访问sqlite有很多种方法,这里只是其中一种。
做个最简单的例子:一个Activity一个DB。先贴源码再解释。
DB类
Activity类
运行该工程文件,就已经创建好了一张表,问题也就随之而来了,怎么知道表已经创建好了呢。先找到点成就感才有兴趣继续玩下去。
cmd之前先确定模拟器已经启动了,如果模拟器没启动 cmd--adb shell报个什么错忘记了。
打开cmd,敲如下命令行:adb shell ,如果回车以后看到的是什么内部外部命令的错误信息,则打开android-skd 目录,在platform-tools目录下面找个这么个东西,adb.exe的可运行文件,找到以后把文件路径地址复制到 环境变量PATH里面,这是本人的PATH值 仅供参考:C:\Program Files\Java\jdk1.6.0_26\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\Windows7Master;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;D:\Android\android-sdk\platform-tools
传说adb.exe这个文件不在platform-tools就在platform里面,如果俩文件夹里面都没有,自己去重新下载android的SDK。
继续cmd,adb shell以后,敲的所有命令都是linux的,在这个项目里面,敲这样的:
cd data/data/opq.testdb/databases 回车 中间的opq.testdb是自己定义的包名。这个包名是有意思的,应该写当时创建Android工程项目的时候,都会自动建立一个Activity,cd data/data/(包名)/databases (包名)=自动建立的Activity所在的包名,因为所有的Android 的程序都是独立的,包括所有的数据也是独立的,不能互相访问,数据库文件必须依托程序而存在,一个sqlite数据库文件对应一个程序,体会一下区别:在java web里面 多个工程可以共用一个sql或者orcal的同一个表空间,在android里面搞同样的事情结果不怎么样只是会报错。
ls -l 回车
如果什么都没看到,那是不可能的,正常情况下,会有一个叫做,test.db的文件,这个就是在数据库操作类里面定义的DB_NAME值,继续敲命令:sqlite3 test.db 如果是命令是正确的,最开始的 # 会变成这样:sqlite> ,敲命令行: .tables tables前面还有个点啊。火车以后会看到至少一张表名:android_metadata 还有一张是自己创建的表名:TB_NAME所指定的值,从这里以后,接下来的操作都跟sql orcal mysql里面的操作一样了,增删改查的语句大同小异。
开始说SQLiteOpenHelper这个类会帮我们做一些事情,创建这个类以后,它会自动去判断我们指定的数据库文件存不存在,如果存在了则不会去调用onCreate方法,如果数据库文件不存在先建库再调用onCreate方法,在onCreate方法里面写的都是创建表的语句,还有一个 onUpgrade 方法,这个方法本人压根就没发现它被调用过,虽然同样是必须实现的父类方法。
每次打开数据库连接以后记得关闭连接,就是 open 和 close 必须成对的出现,最后 have fun
建库建表的过程:继承自SQLiteOpenHelper这个类,名字很形象,数据库的帮助类,意思就是这个类会帮你做一些事情,如果想自己动手最好的办法是去读源码。访问sqlite有很多种方法,这里只是其中一种。
做个最简单的例子:一个Activity一个DB。先贴源码再解释。
DB类
package opq.database; import java.util.ArrayList; import java.util.List; import opq.entity.StuEntity; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DbHelperAdapter { public static final String DB_NAME = "test.db";//数据库名 public static final String TB_NAME = "tbl_stuInfo";//表名 //字段名 public static final String STU_ID = "_id"; public static final String STUNAME = "stuName";//学生姓名 public static final String STUSEX="stuSex";//学生性别 public static final String STUAGE="stuAge";//学生年龄 Context context;//上下文对象 private TestHelper tHelper;//帮助类 private SQLiteDatabase db;//数据库对象 public DbHelperAdapter(Context context){ this.context=context; } /** * 打开数据库连接 * @return */ public DbHelperAdapter open(){ tHelper = new TestHelper(context); db = tHelper.getWritableDatabase(); return this; } /** * 关闭连接 */ public void close(){ tHelper.close(); } /** * 插入数据 * @param stu实体类 * @return */ public long create(StuEntity stu){ ContentValues cv = new ContentValues(); cv.put(STUNAME,stu.getStuName()); cv.put(STUSEX,stu.getStuSex()); cv.put(STUAGE,stu.getStuAge()); return db.insert(TB_NAME, null, cv); } /** * 删除 * @param stu */ public void delete(StuEntity stu){ db.delete(TB_NAME, STU_ID +"="+stu.getStuId() , null); } /** * 更新 整行数据 * @param stu */ public void update(StuEntity stu){ ContentValues cv = new ContentValues(); cv.put(STUNAME,stu.getStuName()); cv.put(STUSEX ,stu.getStuSex()); cv.put(STUAGE,stu.getStuAge()); db.update(TB_NAME, cv, STU_ID+"="+stu.getStuId(), null); /*最后一个为null 所以是更新整行数据,*/ } /** * 更新单个 * @param strTime */ public void updateTime(String strTime){ ContentValues cv = new ContentValues(); cv.put(STUNAME,"yyy"); db.update(TB_NAME, cv,STU_ID+"=?", new String[] { "0" }); } /** * 查询全部 * @return */ public List<StuEntity> getAll(){ String[] col = {STU_ID, STUNAME , STUSEX,STUAGE}; Cursor cursor = db.query(TB_NAME, col, null, null, null, null, null); List<StuEntity> list = new ArrayList<StuEntity>(); if (cursor.moveToFirst()) { do { StuEntity stu = new StuEntity(); stu.setStuId(Integer.valueOf(cursor.getString(0))); stu.setStuName(cursor.getString(1)); stu.setStuSex(cursor.getString(2)); stu.setStuAge(Integer.valueOf(cursor.getString(3))); list.add(stu); }while (cursor.moveToNext()); } return list; } /*数据库帮助类 内部类*/ public static class TestHelper extends SQLiteOpenHelper{ public TestHelper(Context context){ super(context, DB_NAME, null, 1); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub Log.d("TAG","sqliteHelper onCreate"); String CREATE_TABLE ="create table " +TB_NAME + "( " + STU_ID+ " integer primary key AUTOINCREMENT,"+ STUNAME+ " text not null,"+ STUSEX+" text not null," + STUAGE+" int not null "+ ")"; db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("drop table if exists "+TB_NAME); onCreate(db); Log.d("TAG","sqliteHelper onUpgrade"); } } }
Activity类
package opq.testdb; import opq.database.DbHelperAdapter; import opq.entity.StuEntity; import android.app.Activity; import android.os.Bundle; public class TestdbActivity extends Activity { DbHelperAdapter dbHelperAdapter; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); dbHelperAdapter=new DbHelperAdapter(this); StuEntity stu=new StuEntity(); stu.setStuAge(10); stu.setStuName("asdf"); stu.setStuSex("xx"); dbHelperAdapter.open(); dbHelperAdapter.create(stu); dbHelperAdapter.close(); } }
运行该工程文件,就已经创建好了一张表,问题也就随之而来了,怎么知道表已经创建好了呢。先找到点成就感才有兴趣继续玩下去。
cmd之前先确定模拟器已经启动了,如果模拟器没启动 cmd--adb shell报个什么错忘记了。
打开cmd,敲如下命令行:adb shell ,如果回车以后看到的是什么内部外部命令的错误信息,则打开android-skd 目录,在platform-tools目录下面找个这么个东西,adb.exe的可运行文件,找到以后把文件路径地址复制到 环境变量PATH里面,这是本人的PATH值 仅供参考:C:\Program Files\Java\jdk1.6.0_26\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\Windows7Master;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;D:\Android\android-sdk\platform-tools
传说adb.exe这个文件不在platform-tools就在platform里面,如果俩文件夹里面都没有,自己去重新下载android的SDK。
继续cmd,adb shell以后,敲的所有命令都是linux的,在这个项目里面,敲这样的:
cd data/data/opq.testdb/databases 回车 中间的opq.testdb是自己定义的包名。这个包名是有意思的,应该写当时创建Android工程项目的时候,都会自动建立一个Activity,cd data/data/(包名)/databases (包名)=自动建立的Activity所在的包名,因为所有的Android 的程序都是独立的,包括所有的数据也是独立的,不能互相访问,数据库文件必须依托程序而存在,一个sqlite数据库文件对应一个程序,体会一下区别:在java web里面 多个工程可以共用一个sql或者orcal的同一个表空间,在android里面搞同样的事情结果不怎么样只是会报错。
ls -l 回车
如果什么都没看到,那是不可能的,正常情况下,会有一个叫做,test.db的文件,这个就是在数据库操作类里面定义的DB_NAME值,继续敲命令:sqlite3 test.db 如果是命令是正确的,最开始的 # 会变成这样:sqlite> ,敲命令行: .tables tables前面还有个点啊。火车以后会看到至少一张表名:android_metadata 还有一张是自己创建的表名:TB_NAME所指定的值,从这里以后,接下来的操作都跟sql orcal mysql里面的操作一样了,增删改查的语句大同小异。
开始说SQLiteOpenHelper这个类会帮我们做一些事情,创建这个类以后,它会自动去判断我们指定的数据库文件存不存在,如果存在了则不会去调用onCreate方法,如果数据库文件不存在先建库再调用onCreate方法,在onCreate方法里面写的都是创建表的语句,还有一个 onUpgrade 方法,这个方法本人压根就没发现它被调用过,虽然同样是必须实现的父类方法。
每次打开数据库连接以后记得关闭连接,就是 open 和 close 必须成对的出现,最后 have fun
发表评论
-
android开机启动服务
2011-07-08 09:38 2962这是个很简单的过程,这个不像pc机得开机启动,要有精确的内存地 ... -
磨刀霍霍向猪羊Android第一次
2011-07-08 09:35 1235古人有云,工欲善其事必先利其器。开发Android程序,如果没 ... -
HelloWorldAndroid几个控件
2011-07-08 09:32 1070对于程序员来说学习任 ... -
Android手机手势示例
2011-07-08 09:31 1668android的手机主要以触摸 ... -
Activity生命周期和对话框
2011-07-08 09:29 1349在一个Android程序中至少得有一个Activity,And ... -
Android手机手势示例
2011-07-05 09:21 928android的手机主要以触摸屏为主,为了能够让用户体验到更多 ... -
android的Activity生命周期续集
2011-07-05 09:18 1102为手机做的游戏肯定会对来电监听,短信监听,当然,此时此刻监听来 ... -
android开机启动服务v1.0
2011-07-05 09:17 1114这是个很简单的过程,这个不像pc机得开机启动,要有精确的内存地 ...
相关推荐
本`android sqlite操作 demo`提供了关于如何在Android应用中使用SQLite进行数据操作的示例。 SQLite在Android中的使用通常包括以下几个步骤: 1. **创建数据库**: 首先,我们需要创建一个SQLite数据库。这通常是...
现用项目中Sqlite操作类, 1.数据库初始化 2.数据库版本升级 3.从表中查询数据,并返回ArrayList,简单操作不需要建类 4.单一行查询返回、int 返回、string查询返回
mono for android sqlite操作示例源代码、 包括 sqliteconnection 获取 地址设置 commond 链接,操作 完成了 数据库文件创建,数据库表创建, 内容添加等 没做提示窗口, 请用 Android device logging 查找标签:...
本项目"android sqlite操作源码(含滑动分页)"旨在提供一套完整的SQLite数据库操作示例,涵盖了基本的增删改查功能,并且结合了滑动分页技术,这对于处理大量数据的Android应用来说是必不可少的。 首先,我们需要...
总的来说,Android的SQLite操作涵盖了数据库的创建、使用、事务管理、优化等多个方面,熟练掌握这些知识点对于开发高效、可靠的Android应用程序至关重要。通过实践和不断学习,开发者可以更好地利用SQLite为用户提供...
本文将深入探讨如何在Android环境中进行SQLite数据库的操作。 首先,我们需要创建一个SQLite数据库。在Android中,通常通过继承`SQLiteOpenHelper`类来实现。这个类提供了创建、升级和打开数据库的方法。你需要重写...
这篇博客“Android SQLite学习工具”可能详细介绍了如何在Android环境中使用SQLite进行数据操作,并提供了一个实用的SQLite管理工具——sqlite3.exe。 SQLite数据库在Android中的应用主要包括创建数据库、创建表、...
为了提高性能和用户体验,可以使用异步任务或Android的`AsyncTask`来处理SQLite操作,避免阻塞主线程。 六、数据库升级 当需要更改数据库结构(如添加、删除或修改表)时,需要增加`DATABASE_VERSION`并实现`...
为了更方便地管理和操作SQLite数据库,开发者通常会借助一些可视化工具,例如“android sqlite可视化工具”。这类工具提供了图形化的界面,使得数据库的创建、查询、修改和管理变得更加直观和便捷。 “android ...
在这个"Android SQLite数据库操作Demo"中,我们将探讨如何在Android应用中创建、查询、更新和删除SQLite数据库的数据。 1. **数据库初始化** 在Android中,我们通常通过扩展SQLiteOpenHelper类来初始化SQLite...
在这个"android Sqlite数据库操作demo"中,我们可以深入理解如何在Android应用中进行SQLite的增删改查操作。 首先,我们需要在Android项目中创建一个SQLite数据库。这通常通过继承SQLiteOpenHelper类来实现。...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的数据库系统...在提供的压缩包文件中,应该包含了这些操作的完整源码,你可以通过学习和理解这些代码来进一步提升你在Android SQLite操作上的能力。
本教程将详细介绍Android SQLite的基本操作,包括创建数据库、创建表、插入数据、查询数据、更新数据和删除数据。 首先,我们需要在Android应用中创建一个SQLiteOpenHelper的子类,这个类是管理SQLite数据库生命...
Android SQLite 数据库操作报告 一、实验目的 Android 实验报告的主要目的是熟悉 Android 平台的文件操作、掌握 Android SQLite 数据库的设计和应用、熟悉 XML 和 JSON 文件的读取。通过本实验,用户可以掌握 ...
Android中的SQLite操作 - **SQLiteOpenHelper**: 这是Android提供的一个抽象类,用于创建、升级和打开数据库。你需要继承这个类并实现其中的`onCreate()`和`onUpgrade()`方法。 - **onCreate()**: 当数据库首次...
android中 sqlite数据库操作中常用的SQL 语句,留下备用,防止出错
SQLite 是一个轻量级的关系型数据库管理系统,广泛应用于移动设备,尤其..."sqlite-android,android sqlite支持库.zip" 提供了针对 Android 平台的 SQLite 最新实现,可以帮助开发者更高效地管理和操作应用程序的数据。
总之,“Android SQLite可视化操作工具”为Android开发者提供了高效的数据管理手段,减少了与SQLite数据库交互时的复杂性,提高了开发效率。通过熟练掌握这类工具,开发者可以更好地管理和优化应用程序的数据库部分...
本篇将基于一个名为"Android SQLite数据库操作demo"的示例项目,探讨如何在Android中进行SQLite数据库的相关操作。原作者的博客地址为http://blog.csdn.net/liuhe688/article/details/6715983。 首先,我们来看一下...
在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的数据库系统,允许开发者在移动设备上存储和管理数据。本资料包包含了对Android SQLite的详细文档和源码分析,帮助开发者深入理解其工作原理。 ...