Android studio SQLite—数据库存储

Android studio SQLite—数据库存储

往期我们讲过:

初级登录界面:https://blog.csdn.net/genijmni/article/details/106240013

登录界面记住密码:https://blog.csdn.net/genijmni/article/details/106479481

APP启动动画、隐藏标题栏、隐藏系统状态栏:
https://blog.csdn.net/genijmni/article/details/106588165

这次我们将通过数据库实例,了解Android studio SQLite数据库存储的增、删、改、查。

创建数据库

先创建MyDatabaseHelp类继承SQLiteOpenHelper帮助类,然后创建一个student数据库。
表中含有id、stuName、stuNumber、stuAge、stuAddress、stuColleage、stuRemarks、stuRemarks属性。

public class MyDatabaseHelper  extends SQLiteOpenHelper {
    public static final String CREATE_Student = "create table student ("
            + "id integer primary key autoincrement, "
            + "stuName text, "
            + "stuNumber text, "
            + "stuAge integer, "
            + "stuAddress text,"
            + "stuColleage text,"
            + "stuRemarks text)";
    private  Context mContext;
    public MyDatabaseHelper( Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        mContext = context;
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_Student);
        Toast.makeText(mContext, "创建成功", Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

目前我们完成了数据库的初步建立,表中拥有了id、姓名、学号、年龄、地址、学校、用户备注的属性。
效果如图:
创建数据库

数据库功能

数据库的四大基础功能:增、删、改、查。通过四大基础功能完成对数据的控制。我们通过配置JAVA文件完成四大功能。

增加数据

我们在JAVA文件中添加我们需要增加的数据,在数据库创建后,点击增加数据按钮和查询数据按钮完成数据的添加和查看,我们在此添加两条数据,一条用来保留,一条用来删除。

 Button addData = (Button)findViewById(R.id.add_data);
        addData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db=dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();//临时变量
                values.put("stuName","CSDND");
                values.put("stuNumber","10");
                values.put("stuAge",21);
                values.put("stuAddress","省份");
                values.put("stuColleage","学校");
                values.put("stuRemarks","删除");
                db.insert("Student",null,values);// 插入第一条数据
                values.clear();// 开始插入第二条数据
                values.put("stuName","CSDN");
                values.put("stuRemarks","此条信息用来测试删除,用来保留");
                db.insert("student",null,values);
            }
        });

==getWritableDatabase()==为写入
效果如图:

删除数据

通过我们添加的数据可得知:我们想要删除一条数据,但我们如何准确的删除我们想要删除的数据呢?这里我们需要对删除数据定位:

 SQLiteDatabase db = dbHelper.getWritableDatabase();
 db.delete("student","stuName=?",new String[]{"CSDND"});

这里我通过对姓名进行定位,删除姓名为:CSDND的数据
删除数据定位出来姓名,还可以是ID,学号,年龄,地址,学校,备注。只要是数据库里的属性,都可以用来定位。
删除数据完整代码:

 Button deleteButton = (Button) findViewById(R.id.delete_data);
        deleteButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                db.delete("student","stuName=?",new String[]{"CSDND"});
                //删除一个数据
            }
        });

效果如图:

修改数据

修改数据的方法和删除数据类似,也需要定位。定位你所要修改的属性。例如 我想要修改学校:

ContentValues values = new ContentValues();
 values.put("stuColleage","CSDN学院");
 db.update("student", values,null,null);

这样,学校属性就全部跟改为:CSDN学院。
修改数据完整代码:

Button updataData = (Button)findViewById(R.id.updata_data);
        updataData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put("stuColleage","CSDN学院");
                db.update("student", values,null,null);
            }
        });

查询数据

查询表中的数据要遍历Cursor对象,取出数据并打印:

if(cursor.moveToFirst()){
                    do{
                        // 遍历Cursor对象,取出数据并打印
                        int id = cursor.getInt(cursor.getColumnIndex("id"));
                        String stuName = cursor.getString(cursor.getColumnIndex("stuName"));
                        String stuNumber = cursor.getString(cursor.getColumnIndex("stuNumber"));
                        int stuAge = cursor.getInt(cursor.getColumnIndex("stuAge"));
                        String stuAddress = cursor.getString(cursor.getColumnIndex("stuAddress"));
                        String stuColleage = cursor.getString(cursor.getColumnIndex("stuColleage"));
                        String stuRemarks = cursor.getString(cursor.getColumnIndex("stuRemarks"));
                        content.append(id+"\t\t"+stuName+"\t\t\t\t"+
                                stuNumber+"\t\t\t\t\t"+stuAge+"\t\t\t\t\t\t\t"
                                +stuAddress+"\t\t\t" +stuColleage+"\t\t\t\t"+stuRemarks+"\n");
                    }while(cursor.moveToNext());
                }

是通过遍历Cursor,把数据结果取出来后,在TextView展示出来:

extView.setText(content.toString());

这样就可以在界面中看到我们需要的结果:
查询数据完整代码:

Button queryButton= (Button) findViewById(R.id.query_data);
        queryButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                // 查询Student表中所有的数据
                Cursor cursor = db.query("student",null,null,null,null,null,null);
                StringBuilder content = new StringBuilder(); //转义字符
                content.append("id"+"\t\t"+"stuName"+"\t\t"+
                        "stuNumber"+"\t\t"+"stuAge"+"\t\t"
                        +"stuAddress"+"\t\t" +"stuColleage"+"\t\t"+"stuRemarks"+"\n");
                if(cursor.moveToFirst()){
                    do{
                        // 遍历Cursor对象,取出数据并打印
                        int id = cursor.getInt(cursor.getColumnIndex("id"));
                        String stuName = cursor.getString(cursor.getColumnIndex("stuName"));
                        String stuNumber = cursor.getString(cursor.getColumnIndex("stuNumber"));
                        int stuAge = cursor.getInt(cursor.getColumnIndex("stuAge"));
                        String stuAddress = cursor.getString(cursor.getColumnIndex("stuAddress"));
                        String stuColleage = cursor.getString(cursor.getColumnIndex("stuColleage"));
                        String stuRemarks = cursor.getString(cursor.getColumnIndex("stuRemarks"));
                        content.append(id+"\t\t"+stuName+"\t\t\t\t"+
                                stuNumber+"\t\t\t\t\t"+stuAge+"\t\t\t\t\t\t\t"
                                +stuAddress+"\t\t\t" +stuColleage+"\t\t\t\t"+stuRemarks+"\n");
                    }while(cursor.moveToNext());
                }
                cursor.close();
                textView.setText(content.toString());
            }
        });

效果如下:

我会在下面贴上完整的布局代码和JAVA文件代码。

布局代码

<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=".MainActivity">

    <Button
       android:text="创建数据库"
       android:id="@+id/create_database"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"/>

    <Button
        android:text="增加数据"
        android:id="@+id/add_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <Button
        android:text="修改数据"
        android:id="@+id/updata_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <Button
        android:text="删除数据"
        android:id="@+id/delete_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <Button
        android:text="查看数据"
        android:id="@+id/query_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <TextView
        android:text="查询数据结果:"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>


</LinearLayout>

JAVA代码

public class MainActivity extends AppCompatActivity {

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

        final TextView textView = findViewById(R.id.textView);
        dbHelper = new MyDatabaseHelper(this,"student.db",null,1);
        Button createDatabase = (Button)findViewById(R.id.create_database);

        createDatabase.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){dbHelper.getWritableDatabase();}});

        Button addData = (Button)findViewById(R.id.add_data);
        addData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db=dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();//临时变量
                values.put("stuName","CSDND");
                values.put("stuNumber","10");
                values.put("stuAge",21);
                values.put("stuAddress","省份");
                values.put("stuColleage","学校");
                values.put("stuRemarks","删除");
                db.insert("Student",null,values);// 插入第一条数据
                values.clear();// 开始插入第二条数据
                values.put("stuName","CSDN");
                values.put("stuRemarks","此条信息用来测试删除,用来保留");
                db.insert("student",null,values);
            }
        });

        Button updataData = (Button)findViewById(R.id.updata_data);
        updataData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put("stuColleage","CSDN学院");
                db.update("student", values,null,null);
            }
        });

        Button deleteButton = (Button) findViewById(R.id.delete_data);
        deleteButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                db.delete("student","stuName=?",new String[]{"CSDND"});
                //删除一个数据
            }
        });

        Button queryButton= (Button) findViewById(R.id.query_data);
        queryButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                // 查询Student表中所有的数据
                Cursor cursor = db.query("student",null,null,null,null,null,null);
                StringBuilder content = new StringBuilder(); //转义字符
                content.append("id"+"\t\t"+"stuName"+"\t\t"+
                        "stuNumber"+"\t\t"+"stuAge"+"\t\t"
                        +"stuAddress"+"\t\t" +"stuColleage"+"\t\t"+"stuRemarks"+"\n");
                if(cursor.moveToFirst()){
                    do{
                        // 遍历Cursor对象,取出数据并打印
                        int id = cursor.getInt(cursor.getColumnIndex("id"));
                        String stuName = cursor.getString(cursor.getColumnIndex("stuName"));
                        String stuNumber = cursor.getString(cursor.getColumnIndex("stuNumber"));
                        int stuAge = cursor.getInt(cursor.getColumnIndex("stuAge"));
                        String stuAddress = cursor.getString(cursor.getColumnIndex("stuAddress"));
                        String stuColleage = cursor.getString(cursor.getColumnIndex("stuColleage"));
                        String stuRemarks = cursor.getString(cursor.getColumnIndex("stuRemarks"));
                        content.append(id+"\t\t"+stuName+"\t\t\t\t"+
                                stuNumber+"\t\t\t\t\t"+stuAge+"\t\t\t\t\t\t\t"
                                +stuAddress+"\t\t\t" +stuColleage+"\t\t\t\t"+stuRemarks+"\n");
                    }while(cursor.moveToNext());
                }
                cursor.close();
                textView.setText(content.toString());
            }
        });
    }
}

本次我们初步去学习SQLite数据库存储的增、删、改、查四大方法的使用。
下一回,我们将SQLite存储运用到注册登录,通过数据库进行注册登录。
也欢迎大家回顾我们往期讲过的初级登录界面、登录界面记住密码、APP启动动画、隐藏标题栏、隐藏系统状态栏的文章。
初级登录界面:https://blog.csdn.net/genijmni/article/details/106240013

登录界面记住密码:https://blog.csdn.net/genijmni/article/details/106479481

APP启动动画、隐藏标题栏、隐藏系统状态栏:
https://blog.csdn.net/genijmni/article/details/106588165

  • 38
    点赞
  • 249
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值