SQLite

一、什么是SQLite

SQLite数据库存储是Android系统提供的数据存储方式之一
SQLite是专为嵌入式设备设计的一款轻量级数据库
SQLite占用资源非常低,在嵌入式设备中,只需要几百K的内存
SQLite支持标准的SQL语法,遵循数据库的ACID事务
SQLite不需要单独安装,不需要用户名密码就可以使用

二、SQLite常用数据类型

文本型 text
浮点型 real
整型 integer

三、如何创建数据库和数据表

01.新建类(类名自定义)继承SQLiteOpenHelper;
02.实现构造方法;
03.重写onCreate方法(此方法只会在创建时执行,只会执行一次);
04.重写onUpgrade方法;
05.实例化SQLiteOpenHelper的子类对象,例如本例的DBHepler类;
06.调用getReadableDatabase方法或调用getWritableDatabase方法

四、实例展示

1、新建类继承SQLiteOpenHelper;实现构造方法;写入数据表的SQLite的语句,在onCreate中用execSQL创建数据表。
public class HBHelper extends SQLiteOpenHelper {
//数据表的语句
    private  String createSQL="create table students("
             +"id integer primary key autoincrement,"
            +"name text,"
            +"age integer,"
            +"gender text"+")";
/**构造方法
     * 
     * @param context 上下文坏境
     * @param name 数据库名字
     * @param factory 数据库进行查询的时候会返回一个cursor,这个cursor就是在上面的factory中产生的。
如果有需求,可以自定义factory,这样返回的cursor就会符合自己的需求!
     * @param version 数据库版本号
     */
    public HBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
    //创建数据表
        sqLiteDatabase.execSQL(createSQL);
    }

     // 该方法会在数据库需要升级的时候调用

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("ALTER TABLE students ADD COLUMN other TEXT");
    }
}
2、在布局文件中写入自己所需要的控件,两个EditText、四个Button,第二个EditText是用来修改数据的。
<EditText
    android:id="@+id/main3_nametv"
    android:layout_width="match_parent"
    android:layout_height="80dp" />

    <EditText
        android:id="@+id/main3_nametv2"
        android:layout_width="match_parent"
        android:layout_height="80dp" />
    <Button
        android:id="@+id/main3_insert_btn"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:text="插入"/>
    <Button
        android:id="@+id/main3_search_btn"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:text="查询"/>
    <Button
        android:id="@+id/main3_modify_btn"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:text="修改"/>
    <Button
        android:id="@+id/main3_delete_btn"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:text="删除"/>
3、01-在activity中定义控件,绑定ID,设置监听,设置点击事件;02-进行增删改查操作
public class Main3Activity extends AppCompatActivity implements View.OnClickListener{
//定义控件
    private EditText nametv;
    private EditText nametv2;
    private Button  insertBtn;
    private Button searchBtn;
    private Button modifyBtn;
    private Button deleteBtn;
    private HBHelper hbHelper;

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

        bindID();
        //实例化子类对象
        hbHelper=new HBHelper(this,"mybd",null,1);//引号中的是数据库名
    }
    //绑定ID
    private void bindID() {
        nametv=findViewById(R.id.main3_nametv);
        insertBtn=findViewById(R.id.main3_insert_btn);
        searchBtn=findViewById(R.id.main3_search_btn);
        modifyBtn=findViewById(R.id.main3_modify_btn);
        deleteBtn=findViewById(R.id.main3_delete_btn);
        nametv2=findViewById(R.id.main3_nametv2);
        //设置监听
        insertBtn.setOnClickListener(this);
        searchBtn.setOnClickListener(this);
        modifyBtn.setOnClickListener(this);
        deleteBtn.setOnClickListener(this);
    }

    @Override
    //设置点击事件
    public void onClick(View view) {
        switch (view.getId()){
        //加入数据操作
            case R.id.main3_insert_btn:
            //获得SQLiteDatabase对象,读写模式
                SQLiteDatabase sqLiteDatabase=hbHelper.getWritableDatabase();
                //ContentValues类似HashMap,区别是ContentValues只能存简单数据类型,不能存对象
                //创建ContentValues的对象
                ContentValues values=new ContentValues();
                //把数据放入values中
                values.put("name",nametv.getText().toString());//引号中的是列名,后面是输入的数据
                //执行插入操作,放入数据表中
                sqLiteDatabase.insert("students",null,values);//引号中的是数据表名
                break;
                 //查询数据操作
            case R.id.main3_search_btn:

            //得到数据库对象
                SQLiteDatabase sqLiteDatabase1=hbHelper.getReadableDatabase();
                //创建游标
                Cursor cursor=sqLiteDatabase1.query("students",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();
                break;
                //修改数据操作
            case R.id.main3_modify_btn:
                SQLiteDatabase sqLiteDatabase3=hbHelper.getWritableDatabase();
                ContentValues values1=new ContentValues();
                values1.put("name",nametv2.getText().toString());
                //第二个参数是WHERE语句(即执行条件,删除哪条数据)
        //第三个参数是WHERE语句中占位符(即"?"号)的填充值
                //参数分别是表名、values1、列名+占位符即?号、修改前的数据
                sqLiteDatabase3.update("students",values1,"name=?",new String[]{nametv.getText().toString()});
                break;
                 //删除数据操作
            case R.id.main3_delete_btn:
                SQLiteDatabase sqLiteDatabase2=hbHelper.getWritableDatabase();
                //参数分别是表名、values1、列名+占位符即?号、修改后的数据
                //如果第三四个参数为null,那就将每条记录都改掉
                sqLiteDatabase2.delete("students","name=?",new String[]{nametv2.getText().toString()});
                break;
            default:
                break;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值