- 浏览: 28004 次
- 性别:
- 来自: 北京
最新评论
-
xiaojianhx:
Environment 是哪个包里面的?我开发4.0,用不了这 ...
Android 检测SD卡应用 -
qianlei541:
不错不错不错
android软键盘enter键的替换与事件监听 -
ihopethatwell:
到处都是转载的,楼主,你这个图片这个调用能贴上?
android yuv摄像 -
mikite:
mark,看看
Android中的动画研究 -
anyang763:
多谢lz分享,学习了!
android系统调用
我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个 方法。
onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。
除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。
SQLiteOpenHelper 类的基本用法是:当需要创建或打开一个数据库并获得数据库对象时,首先根据指定的文件名创建一个辅助对象,然后调用该对象的getWritableDatabase 或 getReadableDatabase方法 获得SQLiteDatabase 对象。
调用getReadableDatabase 方法返回的并不总是只读数据库对象,一般来说该方法和getWriteableDatabase 方法的返回情况相同,只有在数据库仅开放只读权限或磁盘已满时才会返回一个只读的数据库对象。
下面通过一个简单的小例子说明SQLiteOpenDatabase的用法,其中包括创建数据库、插入数据、更新 、查询等等,我们将查询后获取到的数据显示到TextView上,看一下运行后的效果。
package xiaohang.zhimeng; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; public class MySQLiteHelper extends SQLiteOpenHelper{ //调用父类构造器 public MySQLiteHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } /** * 当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行. * 重写onCreate方法,调用execSQL方法创建表 * */ @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table if not exists hero_info(" + "id integer primary key," + "name varchar," + "level integer)"); } //当打开数据库时传入的版本号与当前的版本号不同时会调用该方法 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } package xiaohang.zhimeng; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; public class MySQLiteHelper extends SQLiteOpenHelper{ //调用父类构造器 public MySQLiteHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } /** * 当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行. * 重写onCreate方法,调用execSQL方法创建表 * */ @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table if not exists hero_info(" + "id integer primary key," + "name varchar," + "level integer)"); } //当打开数据库时传入的版本号与当前的版本号不同时会调用该方法 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } Activity01 Java代码 package xiaohang.zhimeng; import android.app.Activity; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.graphics.Color; import android.os.Bundle; import android.widget.TextView; public class Activity01 extends Activity { MySQLiteHelper myHelper; TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView)findViewById(R.id.tv); //创建MySQLiteOpenHelper辅助类对象 myHelper = new MySQLiteHelper(this, "my.db", null, 1); //向数据库中插入和更新数据 insertAndUpdateData(myHelper); //查询数据 String result = queryData(myHelper); tv.setTextColor(Color.RED); tv.setTextSize(20.0f); tv.setText("名字\t等级\n"+result); } //向数据库中插入和更新数据 public void insertAndUpdateData(MySQLiteHelper myHelper){ //获取数据库对象 SQLiteDatabase db = myHelper.getWritableDatabase(); //使用execSQL方法向表中插入数据 db.execSQL("insert into hero_info(name,level) values('bb',0)"); //使用insert方法向表中插入数据 ContentValues values = new ContentValues(); values.put("name", "xh"); values.put("level", 5); //调用方法插入数据 db.insert("hero_info", "id", values); //使用update方法更新表中的数据 //清空ContentValues对象 values.clear(); values.put("name", "xh"); values.put("level", 10); //更新xh的level 为10 db.update("hero_info", values, "level = 5", null); //关闭SQLiteDatabase对象 db.close(); } //从数据库中查询数据 public String queryData(MySQLiteHelper myHelper){ String result = ""; //获得数据库对象 SQLiteDatabase db = myHelper.getReadableDatabase(); //查询表中的数据 Cursor cursor = db.query("hero_info", null, null, null, null, null, "id asc"); //获取name列的索引 int nameIndex = cursor.getColumnIndex("name"); //获取level列的索引 int levelIndex = cursor.getColumnIndex("level"); for (cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()) { result = result + cursor.getString(nameIndex)+ "\t\t"; result = result + cursor.getInt(levelIndex)+"\n"; } cursor.close();//关闭结果集 db.close();//关闭数据库对象 return result; } @Override protected void onDestroy() { SQLiteDatabase db = myHelper.getWritableDatabase();//获取数据库对象 //删除hero_info表中所有的数据 传入1 表示删除所有行------>点击back按钮 db.delete("hero_info", "1", null); super.onDestroy(); } }
发表评论
-
android 的 Linkify
2011-12-29 09:03 1168Linkify是一个辅助类,通过RegEx样式匹配,自动地在T ... -
Android教程之AndroidManifest.xml文件详介绍及解析
2011-12-21 16:58 0一、关于AndroidManifest.xml Android ... -
obj文件应用
2011-12-20 09:27 0OBJ文件格式(转http://www.ategpu.com/ ... -
Android 应用程序多Activity跳转之后退出整个程序
2011-12-13 11:48 867http://txlong-onz.iteye.com/blo ... -
Android 检测SD卡应用
2011-12-13 10:21 7039if (Environment.getExternalStor ... -
android yuv摄像
2011-12-13 09:26 2873http://eyehere.net/2011/android ... -
Android拍摄视频流的格式转换(YUV --- RGB)
2011-12-13 08:56 1818Android允许用户实时捕获摄像头的视频流,这在利用摄像头的 ... -
android软键盘enter键的替换与事件监听
2011-12-12 09:03 3480软件盘的界面替换只有一个属性android:imeOption ... -
android listView
2011-12-06 09:11 0一、 1 listview中在设置了背景之后,会发生listv ... -
Android 即时通讯 XMPP
2011-12-05 09:47 0http://www.cnblogs.com/charley_ ... -
搭建XMPP协议,实现自主推送消息到手机
2011-12-05 09:46 0http://www.devdiv.com/article-2 ... -
xmpp协议实现消息推送
2011-12-05 09:43 0http://www.cnblogs.com/luxiaofe ... -
Android推送方式比较
2011-12-05 09:32 0http://blog.csdn.net/xyz_lmn/ar ... -
Android教程之AndroidManifest.xml文件详介绍及解析
2011-12-02 09:25 0Android教程之AndroidManifest.xml文 ... -
Android用GSon处理Json数据
2011-12-02 08:57 4http://www.cnblogs.com/VinC/arc ... -
Android访问WCF服务---服务端开发
2011-12-02 08:45 0Android访问WCF服务(上篇)-服务端开发 本章目的: ... -
高效率下载图片——防止内存溢出
2011-12-01 12:06 0在应用中经常需要下载很多的图片,因此,写好图片下载部分的代码非 ... -
ScrollListener
2011-12-01 12:00 0new OnScrollListener() { bo ... -
Android虚拟机(DVM)内存分配——内存溢出问题
2011-12-01 11:57 0大家都知道Android的上层应用是基于 Dalvik Vir ... -
bitmap溢出处理
2011-12-01 11:40 0当从SD卡中获取图片时,如果图片太大,加载会出现溢出异常。因此 ...
相关推荐
android SQLiteOpenHelper 数据库简单应用,今天闲着没事自己写的demo
(代码模板)新建一个SQLiteOpenHelper助手类.xml
ContentProvider与ContentResolver 与 SQLiteOpenHelper http://blog.csdn.net/i_do_can/article/details/50937380 http://blog.csdn.net/i_do_can/article/details/50937380
067集-SQLiteOpenHelper(1)视频教程,个人感觉还可以,共享给大家。
在原有的SQLiteOpenHelper基础上进行的封装,更加方便使用,常用的增删改查方法无需在重新覆写,内文档说明如何使用,只需阅读一次终生受益。
068集-SQLiteOpenHelper(2)视频教程,个人感觉还可以,共享给大家。
数据库的使用,包含增删改查,是使用android 内置的数据库助手类实现的
只有源代码(两个类1.MainActivity,2.MyDbHelper)和一个activity_main.xml布局
SQLiteOpenHelper数据库的简单使用,仅供学习,适合初学者
这是一个Android简单的SQLiteOpenHelper帮助类数据库,实现了两个字符串字段的增删改查。两个demo两种方式。
NULL 博文链接:https://18767136122.iteye.com/blog/2100970
今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenHelper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功能 onUpgrade( ):利用SQL语句,在...
Android移动应用开发之使用ListView+SQLiteOpenHelper实现商品列表添加删除的界面 能够输入数据然后添加到数据库,ListView会自动展现数据库的内容,点击删除能够将数据库中的信息删除并更新ListView 实现思路: 1....
NULL 博文链接:https://byandby.iteye.com/blog/836250
今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenH elper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功能 onUpgrade( ):利用SQL语句,...
NULL 博文链接:https://davidhhs.iteye.com/blog/2150780
SQLiteOpenHelper类的onUpgrade方法的作用
最近学习安卓遇到了对数据库的操作,用到了SQLiteOpenHelper这个类来连接或者创建数据库,通过getWritableDatabase()或者getReadableDatabase(),来对表进行写入或读取操作。 1. 为什么需要SQLiteOpenHelper? ...
利用SQLiteOpenHelper实现SQLite数据的写入和查询,本例以输入学生信息:学号、姓名、年龄、性别,可以保存到数据库,可以输入学号,查询学生信息,并显示在listview。