SQLite数据库创建、更新入门
来源:互联网 发布:感冒运动出汗好吗 知乎 编辑:程序博客网 时间:2024/05/20 14:43
简述:
SQLiteOpenHelper 是一个抽象类,就是说如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它。
SQLiteOpenHelper 中有两个抽象方法,分别是
onCreate()和 onUpgrade(),
我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑。
SQLiteOpenHelper 中还有两个非常重要的实例方法 ,
getReadableDatabase() 和getWritableDatabase()。
这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库) ,
并返回一个可对数据库进行读写操作的对象。
不同的是,当数据库不可写入的时候(如磁盘空间已满)getReadableDatabase()方法返回的对象将以只读的方式去打开数据库,而 getWritableDatabase()方法则将出现异常。
使用SQLite数据库步骤:
一、创建自己的类,继承SQLiteOpenHelper,重写构造方法,onCreate()和 onUpgrade()。SQLiteOpenHelper 中有两个构造方法可供重写, 一般使用参数少一点的那个构造方法即可。
public MyDatabaseHelper(Context context, String name, CursorFactoryfactory, int version) {
super(context, name, factory, version);
mContext = context;
}
这个构造方法中接收四个参数,
1)、第一个参数是上下文 Context,有它才能对数据库进行操作。
2)、第二个参数是数据库名,创建数据库时的名称。
3)、第三个参数查询数据的时候返回一个自定义的 Cursor,一般都是传入 null。
4)、第四个参数表示当前数据库的版本号,可用于对数据库进行升级操作。
二、实例化继承了SQLiteOpenHelper抽象类的类,调用它的 getReadableDatabase()或 getWritableDatabase()方法
构建出SQLiteOpenHelper 的实例之后,再调用它的 getReadableDatabase()或 getWritableDatabase()方法就能够创建数据库了,
【数据库文件会存放在/data/data/<package name>/databases/目录下】
此时,重写SQLiteOpenHelper抽象类的onCreate()方法会得到执行,所以通常会在这里去处理一些创建表的逻辑。
代码:
MySQLiteOpenHelper.java中的代码:
public class MySQLiteOpenHelper extends SQLiteOpenHelper {/** * 创建数据库表book语句 解析: 1)integer 表示整型, 2)real 表示浮点型, 3)text 表示文本类型, 4)blob * 表示二进制类型。 5)primary key 将 id 列设为主键,并用 autoincrement关键字表示 id 列是自增长的。 */public static final String CREATE_BOOK = "create table book ("+ "id integer primary key autoincrement, " + "author text, "+ "price real, " + "pages integer, " + "name text)";/** * 创建数据库表Category 语句 */public static final String CREATE_CATEGORY = "create table Category ("+ "id integer primary key autoincrement, " + "category_name text, "+ "category_code integer)";/** * 上下文对象 */private Context context;/** * 重写SQLiteOpenHelper的构造方法,这个构造方法中接收四个参数: * * @param context * (上下文 Context,有它才能对数据库进行操作) * @param name * (是数据库名,创建数据库时的名称) * @param factory * (查询数据的时候返回一个自定义的 Cursor,一般都是传入 null) * @param version * (当前数据库的版本号,可用于对数据库进行升级操作) */public MySQLiteOpenHelper(Context context, String name,CursorFactory factory, int version) {super(context, name, factory, version);this.context = context;}/** * 实例化SQLiteOpenHelper类之后 ,调用getReadableDatabase()或 getWritableDatabase()方法。 * 如果是要创建的数据库不存在,就执行oncreate()方法,创建数据库; 如果已经存在要创建的数据库,则不执行oncreate()方法 */@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_BOOK);// 执行sql语句Toast.makeText(context, "数据库创建成功", 1).show();}/** * 对数据库进行升级,注意: switch 中每一个 case的最后都是没有使用 break , * 这是为了保证在跨版本升级的时候,每一次的数据库修改都能被全部执行到 */@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {switch (oldVersion) {case 1:db.execSQL(CREATE_CATEGORY);Toast.makeText(context, "更新数据库,旧版本是" + oldVersion, 1).show();case 2:Toast.makeText(context, "更新数据库,旧版本是" + oldVersion, 1).show();default:}}}
MainActivity.java中的代码:
public class MainActivity extends Activity {private MySQLiteOpenHelper helper;private Button create_sqliteDataBase;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/** * 实例化MySQLiteOpenHelper,指定数据库名:Book.db,和版本号 1 * 如果此次执行的版本号,比上次的版本号大(如,上次是1.这次是2),则执行MySQLiteOpenHelper类中的重写的onUpgrade()方法 */helper = new MySQLiteOpenHelper(this, "Book.db", null, 1);create_sqliteDataBase = (Button) findViewById(R.id.create_sqliteDataBase);create_sqliteDataBase.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub/** * 当第一次点击 按钮时,会检测 到当前程序中并没有 Book.db这个数据库, * 于是会创建该数据库并调用 MySQLiteOpenHelper中的 onCreate()方法,这样 Book表也就得到了创建。 * 再次点击 按钮时,会发现此时已经存在 BookStore.db 数据库了,因此不会重复创建一次。 */helper.getWritableDatabase();}});}}
下载链接:
SQLite数据库创建、更新入门下载地址
0 0
- SQLite数据库创建、更新入门
- android SQLite数据库:创建及更新
- SQLite入门之创建数据库和数据表
- 【SQLite入门】使用SQLite、创建数据库、创建表、使用Jdbc连接SQLite
- android数据库SQLite的创建及更新,增,删操作
- sqlite 数据库更新
- Sqlite 数据库更新 iOS
- 使用sqlite创建数据库
- SQLite数据库的创建
- sqlite数据库之一创建
- 创建sqlite数据库
- SQLite创建数据库失败
- 创建sqlite数据库
- Sqlite创建数据库,表
- SQLite存储--创建数据库
- SQLite-创建简单数据库
- android 创建sqlite 数据库
- android sqlite 数据库创建
- 控制器管理
- Mosquitto support websocket
- gridview and listview
- Tomcat 一闪而过
- 一个加密解密的小工具
- SQLite数据库创建、更新入门
- 如何对配置eclipse,让他能够用来开发Android
- VC++关键字-"__declspec"
- 课程设计 广度优先探索—迷宫问题
- TDTC Demo - Github
- 使用LINQ to Entities查询:使用函数
- 对图片进行压缩
- 如何调用Android隐藏API
- 数据结构课程设计代码--电子投票系统