Android之SQLite数据库使用

Android之SQLite数据库使用

SQLite介绍

SQLite是一款轻量级的数据库;SQLite支持标准的SQL语法遵循数据库的ACID事务;它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,只需要几百K的内存。SQLite不需要安装,不需要用户名密码就可以使用。

SQLite使用
  • 创建数据库和数据表
  • 添加数据
  • 查询数据
  • 修改数据
  • 删除数据
创建数据库和数据表步骤
  • 新建类继承SQLiteOpenHelper(抽象类,子类需要重写onCreate 和 onUpgrade方法);
SQLiteOpenHelper构造方法参数
/**
     * @param context 上下文环境
     * @param name 数据库名字
     * @param factory 数据库进行查询的时候会返回一个cursor,这个cursor就是在上面的factory中产生的。
如果有需求,可以自定义factory,这样返回的cursor就会符合自己的需求!
     * @param version 数据库版本号,可用于对数据库进行升级操作
     */
  • 实现构造方法;
  • 重写onCreate方法;
  • 重写onUpgrade方法;
  • 实例化SQLiteOpenHelper的子类对象;
  • 调用getReadableDatabase方法 或 getWritableDatabase方法;
SQLiteDatabase对象方法
SQLiteDatabase对象:

数据库操作对象,用来连接数据库,并可以对数据表进行增删改查。

getReadableDatabase方法:

以只读方式打开数据库,返回只读的SQLiteDatabase对象,一般在查询时使用。

SQLiteDatabase  sqldb = dbhelper.getReadableDatabase();
getWritableDatabase方法:

以可读写方式打开数据库,返回可读写的SQLiteDatabase对象,一般在时使用。

SQLiteDatabase  sqldb = dbhelper.getWritableDatabase();
SQL建表语句
  • 空格问题,列表和列类型中间需要有空格
  • 逗号问题,列与列之间应添加逗号
代码展示

DBHelper类代码

package com.example.administrator.sharedapplication;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by Administrator on 2018/3/20.
 */

//创建自定义类继承SQLiteOpenHelper,实现两个方法,和一个构造方法
public class DBHelper extends SQLiteOpenHelper {

    private String createSQL = "create table student("
            + "id integer primary key  autoincrement not null,"
            + "name text not null,"
            + "age integer not null,"
            + "gender text not null)";

    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

//重写onCreate()方法,执行建表语句
    @Override
    public void onCreate( SQLiteDatabase db) {
     //创建数据库
        db.execSQL(createSQL);
    }

//重写onUpgrade()此方法在更新数据表用到
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("ALTER TABLE student ADD COLUMN other TEXT");
    }
}

xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.administrator.sharedapplication.Main2Activity">

    <EditText
        android:id="@+id/nameEdit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入学生姓名"
        />
    <EditText
        android:id="@+id/modify_name_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入学生姓名"
        />

    <Button
        android:id="@+id/insertBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="插入"
        />
    <Button
        android:id="@+id/searchBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="查询"
        />
    <Button
        android:id="@+id/modifyBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="修改"
        />
    <Button
        android:id="@+id/deleteBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="删除"
        />

</LinearLayout>

Activity文件

package com.example.administrator.sharedapplication;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Main2Activity extends AppCompatActivity implements View.OnClickListener{

    private Button insertBtn;
    private Button searchBtn;
    private Button deleteBtn;
    private Button modifyBtn;
    private EditText nameEdit;
    private EditText modifynameEdit;

    private DBHelper dbhelper;
    private SQLiteDatabase sqldb;

    private static final String TABLE_NAME = "student";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        bindID();

        dbhelper = new DBHelper(this, "mydb", null, 1);
    }

    private void bindID() {
        insertBtn = (Button) findViewById(R.id.insertBtn);
        searchBtn = (Button) findViewById(R.id.searchBtn);
        deleteBtn = (Button) findViewById(R.id.deleteBtn);
        modifyBtn = (Button) findViewById(R.id.modifyBtn);
        nameEdit = (EditText) findViewById(R.id.nameEdit);
        modifynameEdit = (EditText) findViewById(R.id.modify_name_et);

        insertBtn.setOnClickListener(this);
        searchBtn.setOnClickListener(this);
        deleteBtn.setOnClickListener(this);
        modifyBtn.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.insertBtn:
            //创建SQLiteDatabase的对象
               SQLiteDatabase sqLiteDatabase=dbhelper.getWritableDatabase();
               //创建ContentValues对象,又来添加数据
               ContentValues values=new ContentValues();
               values.put("name",nameEdit.getText().toString());
               sqLiteDatabase.insert("student",null,values);
                break;
            case R.id.searchBtn:
                SQLiteDatabase sqLiteDatabase1=dbhelper.getReadableDatabase();
                  //使用游标,游历表中所有数据(params1:表名,params2:指定查询的列名,param3:指定where约束条件;params4:占位符具体值;下面的参数与分组,排序有关)
                Cursor cursor=sqLiteDatabase1.query("student",null,null,null,null,null,null);
                cursor.moveToFirst();
                do {
                 //取出数据
                    String name=cursor.getString(cursor.getColumnIndex("name"));
                    Log.e("NAME",name);
                }while (cursor.moveToNext());
                break;
            case R.id.modifyBtn:
                String name = nameEdit.getText().toString();
                String newName = modifynameEdit.getText().toString();
                SQLiteDatabase sqLiteDatabase2=dbhelper.getWritableDatabase();
                ContentValues values1=new ContentValues();
                values1.put("name","lu");
                sqLiteDatabase2.update("student",values1,"name=? and id>?",new String[]{name,"6"});
                break;
            case R.id.deleteBtn:
                SQLiteDatabase sqLiteDatabase3=dbhelper.getWritableDatabase();
                String name1 = nameEdit.getText().toString();
                sqLiteDatabase3.delete("student","name=?",new String[]{name1});
                break;
        }
    }
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值