- 浏览: 199764 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xumin_minzi:
我也在使用ndk编译,ffmpeg源码放在哪个目录里面?
[原创]Android ndkr8编译 FFmpeg 0.11.1 "Happiness" -
ericchan2012:
在Dialog调用show方法之后
【原创】Android 设置Dialog的长宽和位置 -
maohualei:
求解: 我设置的时候 位置居然没有反应 dial ...
【原创】Android 设置Dialog的长宽和位置
android 数据库操作 (非ContentProvider)
- 博客分类:
- android基础
这里有个概念上需要纠正的东西,ContentProvider是android中共享数据的机制,而不是操作数据库的机制,android的数据库是sqlite。
下面演示如何建立数据库和操作它。
首先要来个SQLiteOpenHelper子类。
然后再写个类来进行db的操作。
当然Person是自己写的一个java bean。对Person信息的封装而已。
好了,这样你就可以完成对数据库和表的创建以及相关操作了。
下面演示如何建立数据库和操作它。
首先要来个SQLiteOpenHelper子类。
public class DatabaseHelper extends SQLiteOpenHelper { private final static String NAME="sharp.db" ; public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } public DatabaseHelper(Context context){ super(context, NAME, null, 1 ); } /** * 用户第一次使用软件时调用,实现数据库的操作crud */ @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub Log.i("save" , "create" ); db.execSQL("create table person(personid integer primary key autoincrement,name varcahr(20),age integer)" ); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("drop table if exists person" ); onCreate(db); } /** * 根据版本号进行更新 * @param db * @param mNewVersion */ public void checkVersionCreate(SQLiteDatabase db,int mNewVersion){ int version = db.getVersion(); if (version != mNewVersion) { db.beginTransaction(); try { if (version == 0 ) { onCreate(db); }else{ onUpgrade(db, version,mNewVersion); } db.setVersion(mNewVersion); //设置为新的版本号 db.setTransactionSuccessful(); } finally{ db.endTransaction(); } } } /** * 数据库名不空,获得数据库实例 * @param mDatabase * @param mContext * @param mName * @param mFactory * @return */ public SQLiteDatabase getDatabase(SQLiteDatabase mDatabase,Context mContext,String mName,CursorFactory mFactory){ if (mDatabase != null && mDatabase.isOpen() && !mDatabase.isReadOnly()) { return mDatabase; // The database is already open for business } if (mName == null) { mDatabase = SQLiteDatabase.create(null); } else { mDatabase = mContext.openOrCreateDatabase(mName, 0 , mFactory); } return mDatabase; } }
然后再写个类来进行db的操作。
public class DbService { private DatabaseHelper databaseHelper; private Context context; public DbService(Context context){ this .context=context; databaseHelper=new DatabaseHelper( this .context); } //保存 public void save(Person person){ SQLiteDatabase db = databaseHelper.getWritableDatabase(); db.execSQL("insert into person(name, age) values(?,?)" , new Object[]{person.getName(), person.getAge()}); } //更新 public void update(Person person){ SQLiteDatabase db = databaseHelper.getWritableDatabase(); db.execSQL("update person set name=?,age=? where personid=?" , new Object[]{person.getName(), person.getAge(), person.getId()}); } //根据id查找 public Person find(Integer id){ SQLiteDatabase db = databaseHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select personid,name,age from person where personid=?" , new String[]{String.valueOf(id)}); if (cursor.moveToNext()){ //迭代记录集 Person person = new Person(); //实例化person person.setId(cursor.getInt(cursor.getColumnIndex("personid" ))); person.setName(cursor.getString(1 )); person.setAge(cursor.getInt(2 )); //将查到的字段,放入person, return person; } cursor.close();//游标关闭 return null ; } //删除 public void delete(Integer id){ SQLiteDatabase db=databaseHelper.getWritableDatabase(); db.execSQL("delete from person where id=?" , new Object[]{id}); } // public List<Person> getScrollData( int firstResult, int maxResult){ List<Person> persons = new ArrayList<Person>(); SQLiteDatabase db = databaseHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select personid,name,age from person limit ?,?" , new String[]{String.valueOf(firstResult),String.valueOf(maxResult)}); //firstResult开始索引 while (cursor.moveToNext()){ //maxResult每页获取的记录数 Person person = new Person(); person.setId(cursor.getInt(cursor.getColumnIndex("personid" ))); person.setName(cursor.getString(1 )); person.setAge(cursor.getInt(2 )); persons.add(person); } cursor.close(); return persons; } // public long getCount(){ SQLiteDatabase db = databaseHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select count(*) from person" , null ); //没有占位符参数的话,直接用null cursor.moveToFirst(); long count = cursor.getLong( 0 ); cursor.close(); return count; } // public void close(){ databaseHelper.close(); } }
当然Person是自己写的一个java bean。对Person信息的封装而已。
好了,这样你就可以完成对数据库和表的创建以及相关操作了。
发表评论
-
android java调用命令行给文件赋权限
2012-09-27 18:18 1610public void chmodFiles(){ Pr ... -
InputStream,String,File相互转化
2012-09-27 18:10 9891. String --> InputStream I ... -
android Uri获取真实路径转换成File的方法
2012-09-27 18:07 1870有的时候要将android uri如content://med ... -
android将路径转化为URI
2012-09-27 18:06 6408如果已經取得了檔案的路徑的字串,那怎麼轉成URI呢? St ... -
如何向android的setting语言列表中添加一门语言(
2012-09-27 12:59 1095如题: 看了下,android2. ... -
android更改暗码
2012-09-26 13:31 1016在Contact应用程序下的SpecialCharSequen ... -
android触屏震动以及震动强度修改
2012-09-26 09:24 3987PhoneWindowManager.java: 在inter ... -
android修改默认语言
2012-09-26 09:24 1456在build/tools/Buildinfo.sh下面 e ... -
android设置默认壁纸
2012-09-25 12:48 15651,动态壁纸 在frameworks\base\core\re ... -
android设置wallpaper
2012-09-25 12:00 1274设置壁纸的代码在 Launcher.java中的case Ad ... -
android Settings中的各个默认设置
2012-09-25 11:07 941在android中,Settings中有许多的默认设置,比如默 ... -
android 调用camera相关操作
2012-09-21 22:11 10171,通过intent调用camera Intent int ... -
android gallery相关操作
2012-09-21 20:11 9621,android调用gallery获取图片 Intent ... -
android中shape
2012-09-15 12:35 7681,作用: 可以在xml中定义图形,并且定义一些效果 2,用法 ... -
android中layer-list
2012-09-15 12:27 10271,作用: 可以将多个图片(图层)按照顺序层叠起来。 2,用法 ... -
android客户端连接人人网之二----获取朋友信息
2012-09-13 15:31 9091,http请求,将paramList发送到http://ap ... -
android客户端连接人人网之二----获取签名
2012-09-13 14:19 1047官方文档: http://dev.xiaonei.com/wi ... -
android客户端连接人人网之一----获取授权
2012-09-13 14:06 1085连接人人网,有两种方法,参考人人网的官网: http://wi ... -
android美化ToggleButton
2012-09-12 09:55 21781、设置XML属性 我们需要设置Toggle ... -
android复合控件
2012-09-11 20:14 1064自定义组合控件,用来复用 其一: 首先看布局文件: <? ...
相关推荐
android 数据库 以及自定义ContentProvider demo
Android应用开发使用ContentProvider以及SQLite实现对数据库的相关操作,可以直接操作数据库,也可以使用ContentProvider来对数据库进行间接操作。
Android高级编程雪梨作业之自定义ContentProvider 将任务01生词本作业中生成的生词本数据库通过自定义ContentProvider的方式,共享给其他应用。 要求如下: (1) 使用自定义SQLiteOpenHelper来管理数据库; (2) 提交...
1、Android Room操作SQLite数据 2、ContentProvider使用,使用Room进行数据库操作
Android数据库ContentProvider封装原理.pdf
本示例结合ContentProvider实现了数据库的增删改查操作 并且扩展性比较好
数据库的运用。
contentprovider实现数据库的增,删,改,查,自定义组件显示
使用Android提供的contentprovider操作数据库的demo。
利用ContentProvider操作数据库,新建Testcase,并用Listview显示查询到的所有Testcase。
Uri(通用资源标识符 Universal Resource Identifer),代表数据操作的地址,每一个ContentProvider发布数据时都会有唯一的地址。 比如:content://(固定写法)+com.android.contacts(包名,可变)+/contacts(path...
用内容提供者操作文件,传输文件,方便与其他应用通信,免的写数据库。
简单Android中的内容提供者实例,带数据库操作。
android数据库系统源码,为基本的图书管理系统,可通过此源码了解ContentProvider的基本实现
采用ContentProvider实现android sqlite数据库的共享,包含了本项目对数据库的访问和第三方项目(新建项目)对数据库的访问。
Android开发之数据库的分页查询
自定义ContentProvider的流程 ContentResolver访问通讯录数据库
一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去,而且ContentProvider是以类似数据库中表的方式将数据暴露的。那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基本一样...
两个apk之间通过Broadcast,BroadcastReceiver广播互相通信及ContentProvider监听数据库增删改查的变换
android database example, such as ContentProvider, AsyncQueryHandler, SQLiteOpenHelper, etc.