- 浏览: 206002 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xumin_minzi:
我也在使用ndk编译,ffmpeg源码放在哪个目录里面?
[原创]Android ndkr8编译 FFmpeg 0.11.1 "Happiness" -
ericchan2012:
在Dialog调用show方法之后
【原创】Android 设置Dialog的长宽和位置 -
maohualei:
求解: 我设置的时候 位置居然没有反应 dial ...
【原创】Android 设置Dialog的长宽和位置
这里有个概念上需要纠正的东西,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 1657public void chmodFiles(){ Pr ... -
InputStream,String,File相互转化
2012-09-27 18:10 10191. String --> InputStream I ... -
android Uri获取真实路径转换成File的方法
2012-09-27 18:07 1918有的时候要将android uri如content://med ... -
android将路径转化为URI
2012-09-27 18:06 6455如果已經取得了檔案的路徑的字串,那怎麼轉成URI呢? St ... -
如何向android的setting语言列表中添加一门语言(
2012-09-27 12:59 1154如题: 看了下,android2. ... -
android更改暗码
2012-09-26 13:31 1059在Contact应用程序下的SpecialCharSequen ... -
android触屏震动以及震动强度修改
2012-09-26 09:24 4047PhoneWindowManager.java: 在inter ... -
android修改默认语言
2012-09-26 09:24 1494在build/tools/Buildinfo.sh下面 e ... -
android设置默认壁纸
2012-09-25 12:48 15991,动态壁纸 在frameworks\base\core\re ... -
android设置wallpaper
2012-09-25 12:00 1307设置壁纸的代码在 Launcher.java中的case Ad ... -
android Settings中的各个默认设置
2012-09-25 11:07 995在android中,Settings中有许多的默认设置,比如默 ... -
android 调用camera相关操作
2012-09-21 22:11 10531,通过intent调用camera Intent int ... -
android gallery相关操作
2012-09-21 20:11 9951,android调用gallery获取图片 Intent ... -
android中shape
2012-09-15 12:35 7961,作用: 可以在xml中定义图形,并且定义一些效果 2,用法 ... -
android中layer-list
2012-09-15 12:27 10521,作用: 可以将多个图片(图层)按照顺序层叠起来。 2,用法 ... -
android客户端连接人人网之二----获取朋友信息
2012-09-13 15:31 9421,http请求,将paramList发送到http://ap ... -
android客户端连接人人网之二----获取签名
2012-09-13 14:19 1101官方文档: http://dev.xiaonei.com/wi ... -
android客户端连接人人网之一----获取授权
2012-09-13 14:06 1129连接人人网,有两种方法,参考人人网的官网: http://wi ... -
android美化ToggleButton
2012-09-12 09:55 22101、设置XML属性 我们需要设置Toggle ... -
android复合控件
2012-09-11 20:14 1118自定义组合控件,用来复用 其一: 首先看布局文件: <? ...
相关推荐
首先,我们来了解Android数据库。Android系统使用SQLite作为默认的轻量级数据库,它支持SQL语法,适用于小型数据存储。在Android中,我们通常通过SQLiteOpenHelper这个类来创建、升级和管理数据库。这个类提供了...
其他应用可以通过ContentResolver访问这些数据,使用标准的URI和ContentProvider操作。 综上所述,Android Room简化了SQLite数据库的管理,提供了更友好的编程接口,而ContentProvider则为数据共享提供了统一的入口...
接下来,我们将深入探讨如何使用ContentProvider和SQLite在Android应用中执行数据库操作。 首先,SQLite在Android中的应用非常广泛。每个Android应用程序可以拥有一个或多个SQLite数据库,这些数据库存储在应用程序...
Android高级编程雪梨作业之自定义ContentProvider 将任务01生词本作业中生成的生词本数据库通过自定义ContentProvider的方式,共享给其他应用。 要求如下: (1) 使用自定义SQLiteOpenHelper来管理数据库; (2) 提交...
`android 创建数据库contentprovider`这个主题主要涉及如何创建一个自定义的ContentProvider来管理数据库中的数据,并实现跨应用的数据共享。以下是对这个主题的详细阐述: 一、ContentProvider概述 ...
"android数据库操作封装"主要是为了提高代码的可读性、可维护性和复用性,通过创建自定义的数据访问对象(DAO)层和数据库帮助类来实现。 1. 数据库Helper类: 在Android中,我们通常会创建一个继承自`...
通过实现ContentProvider并配合SQLite数据库,我们可以方便地实现数据的增、删、改、查操作。同时,通过自定义组件和Adapter,可以灵活地展示和管理这些数据。理解并熟练掌握ContentProvider的使用,对于提升Android...
本示例通过ContentProvider实现了对SQLite数据库的增删改查(CRUD)操作,展示了如何利用ContentProvider来增强应用的数据管理功能和扩展性。 首先,理解ContentProvider的基本结构至关重要。ContentProvider是一个...
"Android数据库ContentProvider封装原理" Android操作系统中的数据库管理是通过ContentProvider来实现的,而ContentProvider是一个抽象类,提供了标准化的接口来访问和管理应用程序的数据。ContentProvider可以提供...
总结来说,这个"android数据库操作实例"涵盖了Android应用中使用SQLite数据库的基础知识,包括创建数据库、定义表结构、插入、查询、更新和删除数据等操作。通过学习这个实例,开发者可以更好地理解如何在Android...
本Demo——"你想要的Android数据库操作精华(安全、并发、单例等)",旨在深入探讨如何在Android Studio环境下进行高效且安全的数据库操作,包括使用数据库框架、数据库加密、并发控制以及单例模式的应用。...
ContentProvider提供了一种标准化的机制,使得不同的应用程序可以安全、有序地访问和共享数据,无论这些数据是存储在SQLite数据库、文件系统还是其他持久化存储中。下面我们将深入探讨ContentProvider的工作原理及其...
本文将深入探讨SQLite在Android中的使用,包括基本概念、数据库操作以及实际应用示例。 ### 1. SQLite基本概念 - **数据库**: 数据库是存储和组织数据的结构化系统,SQLite在Android中表现为一个数据库文件,扩展...
本资源包提供了完整的Android数据库代码示例和详细的讲解资料,非常适合开发者深入学习和理解Android数据库的使用。 首先,我们来了解一下Android中主要使用的数据库系统——SQLite。SQLite是一个轻量级、嵌入式的...
现在,我们来看如何实现一个简单的ContentProvider操作数据库的Demo: 1. **定义Contract类**:创建一个名为`DatabaseContract`的类,定义数据表的列名和URI常量。例如: ```java public final class ...
在这个小例子中,我们将深入理解如何利用ContentProvider来操作SQLite数据库,并展示查询结果到ListView。 首先,让我们了解ContentProvider的基本结构。一个ContentProvider类需要继承自`android.content....
在Android开发中,ContentProvider是四大组件之一,它充当了数据共享的桥梁,使得不同的应用程序之间可以安全地访问和共享数据。本篇文章将详细介绍如何在Android中实现一个简单的ContentProvider。 首先,理解...
在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享和跨应用数据访问的角色。自定义ContentProvider允许开发者创建自己的数据存储解决方案,并与其他应用程序无缝交互。这篇博客将深入探讨如何在...
ContentProvider的insert、query、update和delete方法会对应到SQLite数据库的相应操作。这种方式使得数据管理更加规范,同时也方便了数据的跨应用共享。 六、权限控制 ContentProvider可以设置访问权限,限制其他...
本文将深入解析"android数据库系统源码",并以其基础的图书管理系统为例,探讨如何通过源码理解ContentProvider的基本实现。 首先,Android中的SQLite数据库是一个轻量级、事务型的关系型数据库,它被集成到Android...