SQLite

一.什么是安卓SQLite 
SQLite是安卓的一种轻量级数据存储方式之一。 
SQLite占资源非常低,在嵌入式设备中,只需几百K的内存。 
SQLite支持标准的SQL语句,遵循数据库的ACID(增删改查)事务。 
SQLite不要安装,不需要密码。 
二.为什么要用SQLite 
当数据量大、结构复杂,使用ShareFreferences和文件存储相当复杂,容易出错,效率低下。而使用SQLite就比较简单。 
三.如何使用SQLite 
1.创建数据库和数据表 
2.添加数据

                //获得SQLiteDatabase对象,读写模式
                SQLiteDatabase sqLiteDatabase = datebaseHepler.getWritableDatabase();
                //ContentValues类似HashMap,区别是ContentValues只能存简单数据类型,不能存对象
                ContentValues contentValues = new ContentValues();
                contentValues.put("name", cc.getText().toString());
                //执行插入操作
                sqLiteDatabase.insert("book", null, contentValues);
3.修改数据

                String name = cc.getText().toString();
                SQLiteDatabase sqLiteDatabase2 = datebaseHepler.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put("name", dd.getText().toString());
                //第二个参数是修改的字段及修改的值(已经存放到ContentValues中)
                //第三个参数是WHERE语句
                //第四个参数是WHERE语句中占位符的填充值
                //如果第三四个参数为null,那就将每条记录都改掉
                sqLiteDatabase2.update("book", values, "name=?", new String[]{name});
3.删除数据

 SQLiteDatabase sqLiteDatabase3 = datebaseHepler.getWritableDatabase();
                String name1 = cc.getText().toString();
                //第二个参数是WHERE语句(即执行条件,删除哪条数据)
                //第三个参数是WHERE语句中占位符(即"?"号)的填充值
                sqLiteDatabase3.delete("book", "name=?", new String[]{name1});
四.查询数据

//得到数据库对象
                SQLiteDatabase sqLiteDatabase1 = datebaseHepler.getReadableDatabase();
                //创建游标
                Cursor cursor = sqLiteDatabase1.query("book", null, null, null, null, null, null);
                //游标置顶
                cursor.moveToFirst();
                //遍历
                do {
                    String name = cursor.getString(cursor.getColumnIndex("name"));
                    Log.e("NAME", name);
                } while (cursor.moveToNext());
                //游标归零
                cursor.close();
4.创建数据库和数据表的步骤 
新建类继承SQLiteOpenHelper; 
实现构造方法,重写onCreate、onUpgrade方法; 
实例化SQLiteOpenHelper的子类对象; 
调用getReadableDatabase或getWritableDatabase方法 
五.SQLite实例(代码展示) 
1.创建类继承SQLiteOpenHelper,并写出数据库

package com.example.ll.storeapplication.store;

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

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

public class MyDatebaseHepler extends SQLiteOpenHelper {
    public static final String CREATE_BOOK = "create table book("
            + "id integer primary key autoincrement,"
            + "auto text,"
            + "price  real,"
            + "name text not null)";
    private Context mcontext;

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

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        //创建数据表语句
        sqLiteDatabase.execSQL(CREATE_BOOK);
        Toast.makeText(mcontext, "Create succeed", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        //更新数据表结构
    }
}

2.在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.sqldemo.MainActivity">

    <EditText
        android:id="@+id/name_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <EditText
        android:id="@+id/modify_name_et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/insert_btn"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="插入"/>
    <Button
        android:id="@+id/search_btn"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="查询"/>
    <Button
        android:id="@+id/delete_btn"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="删除"/>
    <Button
        android:id="@+id/modify_btn"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="修改"/>



</LinearLayout>
3.SQLActivity文件代码
package com.example.administrator.sqldemo;

import android.content.ContentValues;
import android.content.SharedPreferences;
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 MainActivity extends AppCompatActivity implements View.OnClickListener{

    private EditText nameEt;
    private EditText modify_name_et;
    private Button insertBtn;
    private Button searchBtn;
    private DBHelper dbHelper;
    private Button modifyBtn;
    private Button deleteBtn;

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


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

    private void bindID() {
        insertBtn=findViewById(R.id.insert_btn);
        searchBtn=findViewById(R.id.search_btn);
        nameEt=findViewById(R.id.name_et);
        modify_name_et=findViewById(R.id.modify_name_et);
        deleteBtn=findViewById(R.id.delete_btn);
        modifyBtn=findViewById(R.id.modify_btn);



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

    @Override
    public void onClick(View v) {

        switch (v.getId()){
            case R.id.insert_btn:
                SQLiteDatabase sqLiteDatabase=dbHelper.getWritableDatabase();
                ContentValues values=new ContentValues();
                values.put("name",nameEt.getText().toString());
                sqLiteDatabase.insert("studengt",null,values);
                break;
            case R.id.search_btn:
                SQLiteDatabase sqLiteDatabase1=dbHelper.getReadableDatabase();
                Cursor cursor=sqLiteDatabase1.query("student",null,null,null,null,null,null);
                do {
                    String name=cursor.getString(cursor.getColumnIndex("name"));
                    Log.e("NAME",name);
                }while (cursor.moveToNext());
                cursor.close();
                break;
            case R.id.modify_btn:
                String name=nameEt.getText().toString();
                String newName=modify_name_et.getText().toString();
                SQLiteDatabase sqLiteDatabase2=dbHelper.getWritableDatabase();
                ContentValues values1=new ContentValues();
                values1.put("name",newName);
                sqLiteDatabase2.update("student",values1,"name=? and id>?",new String[]{name,"6"});
                break;
            case R.id.delete_btn:
                SQLiteDatabase sqLiteDatabase3=dbHelper.getWritableDatabase();
                String name1=nameEt.getText().toString();
                sqLiteDatabase3.delete("student","name=?",new String[]{name1});
                break;
        }

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值