Android 专门提供了SQLiteOpenHelper帮助类,借助这个类就可以非常简单的对数据库进行创建和升级。

  首先SQLiteOpenHelper是一个抽象类,在使用的时候需要创建一个自己的帮助类去继承它。

  SQLiteOpenHelper中有两个抽象方法onCreate()和onUpgrade(),在创建自己的帮助类的时候必须重写这两个方法,在这两个方法中分别实现创建、升级数据库的逻辑。 

  SQLiteOpenHelper中有两个非常重要的实例方法getWritableDatabase()和getReadableDatabase(),这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在就是打开,不存在就会创建一个新的),

  SQLiteOpenHelper的构造方法有四个参数,第一个参数是Context,第二个是数据库的名字,第三个是允许我们查询数据的时候返回的一个自定义的Cursor,一般传入null即可,第四个是版本号。

例子:

  创建一个名字为Bookstore的数据库,在数据库中建一张Book表,表中有id(主键)、作者,价格、页数、书名。Book表的建表语句如下:

  1. create table Book (
  2. id integer primary key autoincrement,
  3. author text,
  4. price real,
  5. pages integer,
  6. name text)

  SQL的数据类型有:integer表示整型,real表示浮点型,text表示文本型,blob表示二进制型,primary key 将id设为主键,autoincrement关键字表示id 列是自增长的。

  在代码中,需要执行这个语句,新建一个MyDatabaseHelper类继承自SQLiteOpenhHelper,代码如下:

  1. public class MyDatabaseHelper extends SQLiteOpenHelper {
  2.  
  3. //把定义SQL建表语句成字符串常量
  4. public static final String CREATE_BOOK = "create table Book("
  5. +"id integer primary key autoincrement,"
  6. +"author text,"
  7. +"price real,"
  8. +"pages integer,"
  9. +"name text)";
  10.  
  11. private Context mContext;
  12.  
  13. //构造方法
  14. public MyDatabaseHelper(Context context,String name,
  15. SQLiteDatabase.CursorFactory factory,int version){
  16. super(context,name,factory,version);
  17. mContext = context;
  18. }
  19.  
  20. //建表
  21. @Override
  22. public void onCreate(SQLiteDatabase db) {
  23. db.execSQL(CREATE_BOOK);
  24. Toast.makeText(mContext,"数据库创建成功",Toast.LENGTH_SHORT).show();
  25. }
  26.  
  27. @Override
  28. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  29.  
  30. }
  31. }

  把定义SQL建表语句成字符串常量,然后在onCreate()中调用SQLiteDatabase的db.execSQL()方法去执行,使用Toast提醒创建成功。

  然后在布局文件中加入一个按钮:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6.  
  7. <Button
  8. android:id="@+id/creat_database"
  9. android:layout_width="match_parent"
  10. android:layout_height="wrap_content"
  11. android:text="建立数据库"/>
  12.  
  13. </LinearLayout>

  最后修改MainActivity的代码

  1. public class MainActivity extends AppCompatActivity {
  2.  
  3. private MyDatabaseHelper dbHelper;
  4.  
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_main);
  9.  
  10. //创建帮助类的实例
  11. dbHelper = new MyDatabaseHelper(MainActivity.this,"BookStore.db",null,1);
  12.  
  13. //注册按钮
  14. Button creatDatabase = (Button) findViewById(R.id.creat_database);
  15.  
  16. //按钮响应
  17. creatDatabase.setOnClickListener(new View.OnClickListener() {
  18. @Override
  19. public void onClick(View view) {
  20. dbHelper.getWritableDatabase();
  21. }
  22. });
  23.  
  24. }
  25. }

  在onCreate()中构建了一个MyDatabaseHelper的对象dbHelper,并命名为BookStore.db,版本号1,通过按钮的点击事件去调用dbHelper的getWritableDatabase()方法,去创建数据库。

  结果如下图所示:

android——SQLite数据库存储(创建)的更多相关文章

  1. android——SQLite数据库存储(操作)

    public class MyDatabaseHelper extends SQLiteOpenHelper { //把定义SQL建表语句成字符串常量 //图书的详细信息 //ID.作者.价格.页数. ...

  2. <Android基础> (六) 数据存储 Part 3 SQLite数据库存储

    6.4 SQLite数据库存储 SQLite是一种轻量级的关系型数据库,运算速度快,占用资源少. 6.4.1 创建数据库 Android为了管理数据库,专门提供了SQLiteOpenHelper帮助类 ...

  3. Android学习之基础知识九 — 数据存储(持久化技术)之SQLite数据库存储

    前面一讲介绍了数据持久化技术的前两种:文件存储.SharedPreferences存储.下面介绍第三种技术:SQLite数据库存储 一.SQLite数据库存储 SQLite数据库是一款轻量级的关系型数 ...

  4. Android中数据存储(三)——SQLite数据库存储数据

    当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢? 数据存储方式 Android 的数据存储有5种方式: 1. Share ...

  5. Android SQLiteOpenHelper Sqlite数据库的创建与打开

    Android Sqlite数据库是一个怎样的数据库? 答:是一种嵌入式小型设备,移动设备,的数据库,应用在穿戴设备(例如:智能手表,计算手环 等等),移动设备(例如:Android系统类型的手机 等 ...

  6. Android Sqlite 数据库版本更新

      Android Sqlite 数据库版本更新 http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承 ...

  7. Android SQLite数据库增删改查操作

    一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字). TEXT(字符 ...

  8. 使用Sqlite数据库存储数据

    1.Sql基本命令 1.1.创建表 表是有行和列组成的,列称为字段,行称为记录. 使用CREATE命令来创建表: 1 CREATE TABLE tab_student (studentId INTEG ...

  9. Android SQLite 数据库 增删改查操作

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

随机推荐

  1. tensorflow学习笔记(1)-环境配置

    配置环境anaconda3+windows10+pycharm+python==3.5.2+tensorflow==1.1.4+cuda10.0+cudnn7 https://www.anaconda ...

  2. 浅谈SpringBoot

    关于SpringBoot有哪些特性,SpringBoot官网是这么描述的: Features Create stand-alone Spring applications Embed Tomcat, ...

  3. 跟着大彬读源码 - Redis 3 - 服务器如何响应客户端请求?(下)

    继续我们上一节的讨论.服务器启动了,客户端也发送命令了.接下来,就要到服务器"表演"的时刻了. 1 服务器处理 服务器读取到命令请求后,会进行一系列的处理. 1.1 读取命令请求 ...

  4. SpringCloud解析之Ribbon

    Ribbon是分布式微服务架构中负载均衡的一个解决方案,我们只需要引入ribbon依赖,然后初始化一个RestTemplate对象,在其上添加@LoadBalanced注解,就可以实现请求的负载均衡, ...

  5. 聊聊C语言的预编译指令include

    "include"相信大家不会陌生,在我们写代码时,开头总会来一句"include XXX".include是干嘛用的,很多教材都提到了,因此这里不会再详细解释 ...

  6. 浅谈对static的理解

    相信很多朋友在面试过程中都遇到过关于static的相关题目,接下来我们来分析一下static. static(静态的),用来修饰成员变量,成员方法,它随着类的加载而加载,使用static修饰的数据可以 ...

  7. TCP、UDP和HTTP简述整理

    http:是用于www浏览的一个协议.tcp:是机器之间建立连接用的到的一个协议. 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.在网络层有IP协议.ICMP协议.ARP协议.R ...

  8. 推荐:经典SQL语句大全

    一.基础 .说明:备份sql server--- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mss ...

  9. Codeforces比赛注意事项(英语比较好,能翻译题目的可以跳过此文章)

    由题目可知,这篇文章是讲翻译文章的. 当然不是教英语啦 其实cf的比赛对于本蒟蒻最大的挑战就是翻译题目啦 所以我比赛时只能靠各种翻译器去无耻地翻译,然后读中文. 目前较好的翻译器有:百度,谷歌,有道. ...

  10. 程序员的长安十二时辰:Java实现从Google oauth2.0认证调用谷歌内部api

    最近公司在做一个app购买的功能,主要思路就是客户在app上购买套餐以后,Google自动推送消息到Java后端,然后Java后端通过订单的token获取订单信息,保存到数据库. Java后端要获取订 ...