SQLite-初识

1.SQLite是什么?

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置,轻量型的数据库,这意味着与其他数据库一样,不需要在系统中配置,就像其他数据库,SQLite引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接,SQLite 直接访问其存储文件。

2.为什么要使用SQLite?

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

3.使用方法

1.新建一个类继承SQLiteOpenHelper 并实现其中的方法
- 构造方法
- SQLiteOpenHelper类的常用方法:onCreate方法 onUpgrade方法
2.重写onCreate方法
此方法只会在第一次创建时执行,只会执行一次
在此方法中使用标准的SQL语句创建数据表
onCreate方法有一个SQLiteDatabase对象参数,通过调用execSQL方法执行建表SQL语句3
.重写onUpgrade方法
此方法用来升级数据库表结构时触发
当需要增加表字段或增加表时,传递进来一个新的数据库版本号,就会触发此方法
4.实例化SQLiteOpenHelper的子类对象,例如本例的DBHelp类
- 创建数据表
create table 表名(
列名 数据类型 主键(primary key) 依次递增(autoincrement) 不为空(not null),
列名 数据类型 ,
列名 数据类型
);
每条数据一定要用英文逗号隔开
常见数据类型:
- NULL–空值
- REAL–浮点型
- TEXT–文本
- INTEGER–整型
6.调用getReadableDatabase方法或getWritableDatabase方法。
例子:

package com.example.fpl.killerapplication;

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

public class MySqliteHelper extends SQLiteOpenHelper {

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


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

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(sql);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

新建好了数据库就可以使用了

package com.example.fpl.killerapplication;

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;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;


public class StudentActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText nameTV;
    private  EditText ageTV;
    private Button button;
    private Button findbtn;
    private  StudentAdapter studentAdapter;


    private  Button changebtn;
    private  Button delbtn;


    private String TAG="List";

    private ListView listView;
    private List<Student_bean> student_beanList=new ArrayList<>();




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

        bindID();
        button.setOnClickListener(this);
        findbtn.setOnClickListener(this);
        changebtn.setOnClickListener(this);
        delbtn.setOnClickListener(this);




    }

    private void bindID() {

        nameTV=findViewById(R.id.name_ET);
        ageTV=findViewById(R.id.age_ET);
        button=findViewById(R.id.confirm_btn);
        findbtn=findViewById(R.id.find_btn);
        changebtn=findViewById(R.id.change_btn);
        delbtn=findViewById(R.id.delete_btn);


        listView=findViewById(R.id.StudentDATA_lv);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case  R.id.confirm_btn:
                addStudent();
                break;


            case R.id.find_btn:

                findstudent();
                break;
            case R.id.change_btn:

                changestudent();
                break;
            case R.id.delete_btn:

                deletestudent();
                break;


                default:
                    break;
        }
    }
     //删除学生表数据
    private void deletestudent() {

        String name=nameTV.getText().toString();
        String age=ageTV.getText().toString();
        MySqliteHelper mySqliteHelper=new MySqliteHelper(this,"student-tables",null,1);
        SQLiteDatabase sqLiteDatabase=mySqliteHelper.getWritableDatabase();

        sqLiteDatabase.delete("student","name=? and age=?",new String[]{name,age});



    }
    //修改表中数据
    private void changestudent() {

    }
    //查询表中数据
    private void findstudent() {
        student_beanList.clear();

        MySqliteHelper mySqliteHelper=new MySqliteHelper(this,"student-tables",null,1);
        SQLiteDatabase sqLiteDatabase=mySqliteHelper.getWritableDatabase();
        //获取游标
        Cursor cursor=sqLiteDatabase.query("student",null,null,null,null,null,null);
        //游标置顶
        cursor.moveToFirst();
        do {
            String name=cursor.getString(1);
            int age=cursor.getInt(2);


            Student_bean student_bean=new Student_bean(name,age);
            student_beanList.add(student_bean);


           studentAdapter=new StudentAdapter(this,student_beanList );

            Log.e(TAG,"Liststudent: "+name+" ,age: "+age);


        }while (cursor.moveToNext());
                listView.setAdapter(studentAdapter);
    }
      //添加数据
    private void addStudent() {

        String name=nameTV.getText().toString();
        int age= Integer.parseInt(ageTV.getText().toString());

        ContentValues values=new ContentValues();
        //以键值对的方式
        values.put("name",name);
        values.put("age",age);


        //使用前面创建好的类,实例化出对象,后面分别是数据库名和版本号
        MySqliteHelper mySqliteHelper=new MySqliteHelper(this,"student-tables",null,1);
        SQLiteDatabase sqLiteDatabase=mySqliteHelper.getWritableDatabase();
        //使用insert方法传入表中
        sqLiteDatabase.insert("student",null,values);



    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值