zoukankan      html  css  js  c++  java
  • 2021.2.9 SQLlite数据库

    一、今日学习内容

        SQLite:

           SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。

            SQLite数据库,它广泛用于包括浏览器、IOS,Android以及一些便携需求的小型web应用系统。

    SQLite数据库的常用操作:

            包含建表、删除表、增、删、改、查,SQL语法如下:

            建表:

    create table if not exists 表名(字段1 类型(长度),字段2 类型(长度),...)

            删除表:

    drop table if exists 表名

            增:

    insert into 表名 (字段1,字段2,字段3 ...) values (值1,值2,值3 ...);
    
    insert into 目标数据表 select * from 源数据表;

            删:

    delete from 表名 where 条件表达式

            改:

    update 表名 set 字段1=值1,字段2=值2... where 条件表达式

           查:

    select * from 表名 where 条件表达式

    实例:

            1、首先先创建一个DBHelper类(DBOpenHelper.java)

            在这里会执行建库、建表的操作

    package com.hyl.dao;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    
    /**
     * @programName: DBOpenHelper.java
     * @programFunction: database helper class
     * @createDate: 2018/09/29
     * @author: AnneHan
     * @version:
     * xx.   yyyy/mm/dd   ver    author    comments
     * 01.   2018/09/29   1.00   AnneHan   New Create
     */
    public class DBOpenHelper extends SQLiteOpenHelper {
        public DBOpenHelper(Context context,String name, CursorFactory factory,
                            int version){
            super(context, name, factory, version);
        }
    
        @Override
        //首次创建数据库的时候调用,一般可以执行建库,建表的操作
        //Sqlite没有单独的布尔存储类型,它使用INTEGER作为存储类型,0为false,1为true
        public void onCreate(SQLiteDatabase db){
            //user table
            db.execSQL("create table if not exists user_tb(_id integer primary key autoincrement," +
                    "userID text not null," +
                    "pwd text not null)");
        }
    
        @Override//当数据库的版本发生变化时,会自动执行
        public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
    
        }
    }

    LitePal:

       

    1.配置Litepal:在build.gradle文件的dependencies闭包中添加依赖:compile ‘org.litepal.android:core:1.4.1’
    2.在src/main目录下创建一个assets目录,在该目录下新建一个litepal.xml文件,编辑里面内容:

    用于指定数据库名
    用于指定数据库版本号

    3.在AndroidManifect.xml中的标签中写如下代码
    android:name=“org.litepal.LitePalApplication”
    4.可以创建和升级数据库了
    如:创建一个Book类
    public class Book extends DataSupport{
    private int id;
    private String author;
    private double price;
    private int pages;
    private String name;
    private String press;
    //生成get和set方法的快捷键是Alt+Inser
    public int getId() {
    return id;
    }

    5.创建数据库,在MainActivity中添加如下代码:
    Button createDatabase=findViewById(R.id.create_database);
    createDatabase.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    LitePal.getDatabase();
    }
    });
    6.升级同样的方式创建一张表,需要在litepal.xml添加mapping标签,同时版本号加1
    7.添加数据:
    Button addData=findViewById(R.id.add_data);
    addData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    Book book=new Book();
    book.setName(“The Da Vinci Code”);
    book.setAuthor(“Dan Browm”);
    book.setPages(454);
    book.setPrice(16.94);
    book.setPress(“Unknow”);
    book.save();
    }

    8.更新数据:
    Button updataData=findViewById(R.id.updata_data);
    updataData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    Book book=new Book();
    //方法一只能对已存储的对象进行操作,限制性比较大
    // book.setName(“The Lost Symbol”);
    // book.setAuthor(“Dan Brown”);
    // book.setPages(510);
    // book.setPrice(19.95);
    // book.setPress(“Unknow”);
    // book.save();
    // book.setPrice(10.99);
    // book.save();
    //方法二
    book.setPrice(15.00);
    book.setPress(“Anchor”);
    book.updateAll(“name=? and author=?”,“The Lost Symbol”,“Dan Brown”);
    //LitePal提供了一个setToDefault()方法,然后传入相应的列名就可实现
    book.setToDefault(“pages”);
    book.updateAll();
    }
    });
    9.删除数据:
    Button deleteData=findViewById(R.id.Delete_data);
    deleteData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    DataSupport.deleteAll(Book.class,“price<?”,“15.01”);
    }
    });
    10.查询数据
    Button queryData=findViewById(R.id.Query_data);
    queryData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    List books=DataSupport.findAll(Book.class);
    for (Book book:books){
    Log.d(“MainActivity”, "book name is "+book.getName());
    Log.d(“MainActivity”, "book author is "+book.getAuthor());
    Log.d(“MainActivity”, "book pages is "+book.getPages());
    Log.d(“MainActivity”, "book price is "+book.getPrice());
    Log.d(“MainActivity”, "book press is "+book.getPress());
    });

    二、遇到的问题

       对于SQLite的用法不是很理解

    三、明日计划

       明天继续学习相关知识

  • 相关阅读:
    (转载)gethostbyname() 用域名或主机名获取IP地址
    (转载)Linux网络编程inet_aton和inet_network和inet_addr三者比较
    (转载)Linux网络编程inet_pton与inet_ntop
    (转载)获取以太网卡的MAC地址
    (转载)Linux网络编程使用gethostbyaddr,通过ip地址,得到该ip地址的主机的信息
    (转载)Linux网络编程inet_ntoa问题记录
    Linux中pthread_detach()线程注意
    regexpfield tcl tk
    Iwidgets checkbox
    iwidgets hyperhelp tcl tk
  • 原文地址:https://www.cnblogs.com/wmdww/p/14864677.html
Copyright © 2011-2022 走看看