Android oncreate onupgrade什么时候被调用
在学习Android数据库SQLite之前,必须意识到这一点,目前在Android系统中集成的是SQLite3 版本,SQLite是一个开源的嵌入式数据库,他支持NULL、INTEGER、REAL、TEXT和BLOB数据类型,不支持静态数据类型,而是使用列 关系。可以把SQLite数据库近似看成是一种无数据类型的数据库,你可以把任何类型的资料存放在飞Integer类型的主键之外的其他字段上去,另外字 段的长度也是没有限度的。不过建议一定要在编写SQL语句的时候,按照标准的SQL语法,因为这样在别人看你的代码时候,便于更好的理解。
SQLite可以解析大部分的标准SQL语句:
建表语句:create table 表名(主键名 integer primary key
autoincrement,其他列名及属性) 查询语句:select * from 表名 where 条件子句 group by 分组子句
having…order by 排序子句。 分页语句:select * from 表名 limit 记录数 offset 开始位置 或者
select * from 表名 limit 开始位置,记录数 插入语句:insert into 表名(字段列表) values (值列表)
更新语句:update 表名 set 字段名=值 where 条件子句 删除语句:delete from 表名 where 条件子句
删表语句:drop table if exists 表名
而为了方便对数据库进行版本管理,建议在开发项目的时候使用SQLiteOpenHelper类,它提供了两个重要的方法,分别是
onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db,int
oldVersion,int
vewVersion),前者用于初次使用软件时生成数据库,后者用于升级软件时更新数据库表结构。提示一下,在软件升级前,最好对原有数据进行备份,在
新表建好后把数据导入新表中。实现了这两个方法,就可以用他的getWritableDatabase()和getReadableDatabase()
来获得数据库。这里提醒一句,在使用SQLite的进行查询时最好用占位符“?”来代替各值,例如:
java代码:
- SQLiteDatabase db=databaseHelper.getWritableDatabase();
- db.execSQL(“update person set name=?,age=? where personid=?”,new Obect{person.getName(),person.getAge(),person.getId()});
复制代码
execSQL()方法是用来执行除查找语句外的sql语句,查找语句用rawQuery()来执行它会放回一个Cursor。当然,他还提供了封装好的Java类方法供我们操作。具体方法不介绍了,可以直接查看文档中SQLiteDatabase类的用法。
那要查看数据库中的内容怎么办呢?一种方法是把数据库文件导出到电脑中,然后用SQLite
Developer这个软件即可打开查看其中的结构和内容。另一种是直接用命令行查看(推荐),可以通过adb
shell进入模拟器的Linux控制台,找到数据库文件,用#sqlite3 数据库名 的方式进入数据库,如此即可查看数据库中的内容。
Android oncreate onupgrade什么时候被调用的更多相关文章
- Android——onCreate( )方法详解(转)
android开发之onCreate( )方法详解 onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Go ...
- 有关ViewPager的使用及解决Android下ViewPager和PagerAdapter中调用notifyDataSetChanged失效的问题
ViewPager是android-support-v4.jar包中的一个系统控件,继承自ViewGroup,专门用以实现左右滑动切换View的效果,使用时需要首先在Project->prope ...
- 解析android framework下利用app_process来调用java写的命令及示例
解析android framework下利用app_process来调用java写的命令及示例 在android SDK的framework/base/cmds目录下了,有不少目录,这些目的最终都是b ...
- Android学习---如何创建数据库,SQLite(onCreate,onUpgrade方法)和SQLiteStudio的使用
一.android中使用什么数据库? SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程式庫中.它是D.RichardHipp建立的公有领域项目.SQLite 是一个软件库,实现 ...
- Android数据库升级、降级、创建(onCreate() onUpgrade() onDowngrade())[4]
数据库版本升级对软件的管理操作. 我们手机经常会收到xxx软件升级什么的提醒,你的软件版本更新,同时你的数据库对应的版本也要相应的更新. 数据库版本更新需要主要的问题: 软件的1.0版本升级到1.1版 ...
- Android数据库升级、降级、创建(onCreate() onUpgrade() onDowngrade())的注意点
以下内容可以作为面试官在面试的时候的问题,感觉比较好,是比较常用的知识点,可以用来考察基础是否扎实. 也可以程序猿学习.开发中的注意点.因为稍微不注意,就有可能导致数据库不能用. DBAdapter. ...
- Android横竖屏切换不重新调用onCreate()
再次感叹Android的碎片化!!!! 设置AndroidManifest.xml中Activity的android:configChanges=”keyboardHidden|orientation ...
- Android入门篇2-activity调用跟数据传递
一.activity调用 假设ActivityTest调用SecondActivity 1.显示调用 button1.setOnClickListener(new View.OnClickListen ...
- onConfigurationChanged与OnCreate,究竟谁被调用的问题
在以前的版本中只要在AndroidManifest.xml文件中对activity指定android:configChanges="keyboardHidden|orientation&qu ...
随机推荐
- 【小程序】wxs使用
wxs使用 WXS(WeiXin Script)是小程序的一套脚本语言,结合WXML,可以构建出页面的结构. wxs可以说就是为了满足能在页面中使用js存在的,在wxml页面中,只能在插值{{ }}中 ...
- Bootstrap全局CSS样式之表格
.table--基础表格样式. .table-striped--给<tbody>之内的每一行添加斑马条纹样式: .table-bordered--为表格添加边框: .table-hover ...
- web中的水晶报表 "出现通信错误。将停止打印"
被这个问题快折腾死,死活都找不到原因,找了一堆解答,无外乎这几种情况,但都不管用 在Page_Init中绑定数据.无效. activex控件的版本,我试过10.2.0.1146等多个版本的dll,10 ...
- [Node.js]23. Level 4: Semantic versioning
Update the versions on your dependencies to be a little more flexible, adding the ~ in front of your ...
- WPF{ComboBox绑定类对象, 下拉列显示的值,与取到的值}
DisplayMemberPath 是用来显示下拉列表的值 SelectedValuePath是用来取得选中项的值. ComboBox绑定类对象, 下拉列显示的值,与取到的值 string. Join ...
- Linux下时间格式转换及获取方法
Linux下使用clock_gettime给程序计时 #include <stdio.h> #include <unistd.h> #include <stdlib.h& ...
- 虚拟机里面做了个MySQLS主从:
虚拟机里面做了个主从: 但是IO现成一直不能跟主库上的dump现成通信, Slave_IO_Running: No Last_IO_Error: error connecting to master ...
- xcode 打包
iOS的要安装Xcode,否则执行下面命令的时候报错 ionic platform add ios ionic build ios ionic emulate ios 方法二: 1.打开终端 -- b ...
- 手动脱NsPacK壳实战
作者:Fly2015 这里脱壳的程序是吾爱破解培训的作业2,相较于作业1略微要强一点,可是仅仅要掌握了脱壳的ESP定律,脱这个Nspack壳并不难.只是还是蛮有意思的. 1.使用查壳软件对加壳的程序进 ...
- mysql循环批量插入测试数据
http://blog.51cto.com/tianxingzhe/1676097 DROP PROCEDURE test_insert ; DELIMITER $$ CREATE PROCEDURE ...