• 安卓开发笔记(十三):SQLite数据库储存(下)数据的增添,更改,删除,查询


     

    SQLite数据库存储(下)

    1.增添数据

    对于添加数据的话我们只需要在主活动当中import新的包以及在主活动当中写上适当的代码就可以了,不需要在我们之前创建新的类当中书写新的代码。现在的主活动代码如下:

    package com.example.lenovo.studyittwo;
    
    
    import android.content.IntentFilter;
    import android.content.SharedPreferences;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.content.*;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
        private MyDatabaseHelper dbHelper;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            // 构建MyDatabaseHelper对象,指定数据库名为"BookStore.db、版本号为1,版本号改为2之后则会直接
            dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2);
            Button btn_create_database = (Button) findViewById(R.id.creat);
            btn_create_database.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // 创建或打开一个现有的数据库(已存在则打开,否则创建一个新的)
                    dbHelper.getWritableDatabase();
                }
            });
            Button addData= (Button)findViewById(R.id.add);
            addData.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   SQLiteDatabase db=dbHelper.getWritableDatabase();
                   ContentValues values=new ContentValues();
                   values.put("name","the fuck code");
                   values.put("autuor","fuckers");
                   db.insert("Book",null,values);
                   values.clear();
                   values.put("name","the fuck code");
                   values.put("autuor","fuckers");
                   db.insert("Category",null,values);
                   values.clear();
    
                }
            });
    
    
    
        }}

    这样我们就分别向book表以及category表当中增添了数据了。当然我们也可以在这段代码当中看到我们新建了一个按钮,用于演示我们数据是否已经插入成功,下面是我们新的主活动界面的代码:

    <?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:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
       <Button
           android:id="@+id/creat"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Create database"/>
       <Button
           android:id="@+id/add"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Add data"/>
    
    </LinearLayout>

    很自然地运用了一个线性的垂直布局,只是增加了一个button而已。

    2.更改数据

    为了方便研究更改数据,我们在布局下加入更改数据的按钮,代码如下:

    <?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:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
       <Button
           android:id="@+id/creat"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Create database"/>
       <Button
           android:id="@+id/add"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Add data"/>
       <Button
           android:id="@+id/updata"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Updata data"/>
    
    </LinearLayout>

    这里上主活动的代码,我们只是在第三个按钮处将代码做了适当的添加,这样就可以进行数据的更改了:

    package com.example.lenovo.studyittwo;
    
    
    import android.content.IntentFilter;
    import android.content.SharedPreferences;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.content.*;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
        private MyDatabaseHelper dbHelper;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            // 构建MyDatabaseHelper对象,指定数据库名为"BookStore.db、版本号为1,版本号改为2之后则会直接
            dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2);
            Button btn_create_database = (Button) findViewById(R.id.creat);
            btn_create_database.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // 创建或打开一个现有的数据库(已存在则打开,否则创建一个新的)
                    dbHelper.getWritableDatabase();
                }
            });
            Button addData= (Button)findViewById(R.id.add);
            addData.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   SQLiteDatabase db=dbHelper.getWritableDatabase();
                   ContentValues values=new ContentValues();
                   values.put("name","the fuck code");
                   values.put("autuor","fuckers");
                   db.insert("Book",null,values);
                   values.clear();
                   values.put("name","the fuck code");
                   values.put("autuor","fuckers");
                   db.insert("Category",null,values);
                   values.clear();
    
                }
            });
            Button updataData= (Button)findViewById(R.id.updata);
            updataData.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   SQLiteDatabase db=dbHelper.getWritableDatabase();
                   ContentValues values=new ContentValues();
                   values.put("name","我是傻逼
    ");
                   db.update("Book",values,"name=?",new String[]{"the fuck code"});
    
                }
            });
    
    
    
        }}

    3.删除数据

    还是同样的套路,我们直接在主界面上加入第四个删除数据的按钮:

    <?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:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
       <Button
           android:id="@+id/creat"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Create database"/>
       <Button
           android:id="@+id/add"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Add data"/>
       <Button
           android:id="@+id/updata"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Updata data"/>
       <Button
           android:id="@+id/deletedata"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Delete data"/>
    
    </LinearLayout>

    然后写入主活动的代码:

    package com.example.lenovo.studyittwo;
    
    
    import android.content.IntentFilter;
    import android.content.SharedPreferences;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.content.*;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
        private MyDatabaseHelper dbHelper;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            // 构建MyDatabaseHelper对象,指定数据库名为"BookStore.db、版本号为1,版本号改为2之后则会直接
            dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2);
            Button btn_create_database = (Button) findViewById(R.id.creat);
            btn_create_database.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // 创建或打开一个现有的数据库(已存在则打开,否则创建一个新的)
                    dbHelper.getWritableDatabase();
                }
            });
            Button addData= (Button)findViewById(R.id.add);
            addData.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   SQLiteDatabase db=dbHelper.getWritableDatabase();
                   ContentValues values=new ContentValues();
                   values.put("name","the fuck code");
                   values.put("autuor","fuckers");
                   db.insert("Book",null,values);
                   values.clear();
                   values.put("name","the fuck code");
                   values.put("autuor","fuckers");
                   db.insert("Category",null,values);
                   values.clear();
    
                }
            });
            Button updataData= (Button)findViewById(R.id.updata);
            updataData.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   SQLiteDatabase db=dbHelper.getWritableDatabase();
                   ContentValues values=new ContentValues();
                   values.put("name","我是傻逼
    ");
                   db.update("Book",values,"name=?",new String[]{"the fuck code"});//如果名字等于这个就可以进行更新了
    
                }
            });
            Button deleteData= (Button)findViewById(R.id.deletedata);
            deleteData.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   SQLiteDatabase db=dbHelper.getWritableDatabase();
                   ContentValues values=new ContentValues();
                   values.put("name","我是傻逼
    ");
                   db.delete("Book","name=?",new String[]{"the fuck code"});//如果名字等于这个就可以直接删除了
    
                }
            });
    
    
    
    
        }}

    4.查询数据

    在咱们的安卓开发当中的SQLiteDatabase类当中还提供了一个query()方法对于数据进行查询,这个方法非常复杂,最短的一个方法重载也需要传入7个参数。

    主界面:

    <?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:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
    <Button
        android:id="@+id/creat"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Create database"/>
    <Button
        android:id="@+id/add"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Add data"/>
    <Button
        android:id="@+id/updata"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Updata data"/>
    <Button
        android:id="@+id/deletedata"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Delete data"/>
    
    </LinearLayout>

    主活动的查询代码如下:

     private void queryStudents() {
    
            // 相当于 select * from students 语句
            Cursor cursor = mSQLiteDatabase.query(SQLiteDbHelper.TABLE_STUDENT, null,
                    "cls_id > ? and id >= 1", new String[]{"3"},
                    null, null, null, null);
    
            // 不断移动光标获取值
            while (cursor.moveToNext()) {
                // 直接通过索引获取字段值
                int stuId = cursor.getInt(0);
    
                // 先获取 name 的索引值,然后再通过索引获取字段值
                String stuName = cursor.getString(cursor.getColumnIndex("name"));
                Log.e("", "id: " + stuId + " name: " + stuName);
            }
            // 关闭光标
            cursor.close();
        }

    最后我们利用adb工具就可以查看到我们是否成功进行数据库操作啦!!

  • 相关阅读:
    辞职信(转贴)
    去掉控件上显示聚焦框
    静态构造函数
    用Excel 公式求 金额的差额
    2020/2/6学习总结
    2020/2/3学习总结
    2020/2/7学习总结
    2020/1/31学习总结
    2020/2/5学习总结
    2020/2/4学习总结
  • 原文地址:https://www.cnblogs.com/geeksongs/p/10530940.html
Copyright © 2020-2023  润新知