【Android Studio】学习——数据存储管理

发布于:2024-12-18 ⋅ 阅读:(138) ⋅ 点赞:(0)

AndroidStudio实验——数据存储管理


一:实验目标和实验内容:

1,掌握数据存储的基本概念,能编写数据存储过程。

2、掌握SQLITE的基本概念,能实现基础CRUD操作。

SQLite是一种轻量级的数据库管理系统,它被广泛用于移动应用和桌面应用中。SQLite数据库是一个服务器进程,它存储在一个单一的磁盘文件中。

3、需实现的具体功能为:数据的标准增、删、改、查操作。

二:数据库的CRUD操作

【一】创建(Create)

(1)创建数据库:

在Android中,SQLite数据库通常由SQLiteOpenHelper的子类创建和管理。

public class DatabaseHelper extends SQLiteOpenHelper {
  private static final String DATABASE_NAME = "myDatabase.db";
  private static final int DATABASE_VERSION = 1;
  @Overridejava
  public void onCreate(SQLiteDatabase db) {
   db.execSQL("CREATE TABLE IF NOT EXISTS users (" +
       "id INTEGER PRIMARY KEY AUTOINCREMENT," +
          "name TEXT," +
          "age INTEGER)");
  }
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS users");
    onCreate(db);
  }
}

(2)插入数据:

使用insert()方法向表中插入新行。

SQLiteDatabase db = databaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "zjy");
values.put("age", 20);
long newRowId = db.insert("users", null, values);

【2】读取(Read)

(1)查询数据:

使用query()方法从表中检索数据。

Cursor cursor = db.query("users", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
  do {
    String name = cursor.getString(cursor.getColumnIndex("name"));
    int age = cursor.getInt(cursor.getColumnIndex("age"));
    // 使用数据...
  } while (cursor.moveToNext());
}
cursor.close();

【3】更新(Update)

更新数据:

使用update()方法修改表中的现有行。

ContentValues updateValues = new ContentValues();
updateValues.put("age", 31);
int rowsUpdated = db.update("users", updateValues, "name = ?", new String[]{"zjy"});

【4】删除(Delete)

删除数据:

使用delete()方法从表中删除行。

int rowsDeleted = db.delete("users", "name = ?", new String[]{"zjy"});

三:实验结果:(实验小结与结果截图)

1、功能说明与核心代码

核心代码截图(FileMainActivity.java):

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

layout布局文件(activity_file_main.XML)

在这里插入图片描述

2,功能说明

【1】button1

点击此按钮会将键值对"name"和"zjy",以及"key"和"123456"保存到SharedPreferences中,并在日志中打印出保存的"name"值。

说明:点击button,存入事先写入的数据

button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                sp.edit()
                        .putString("name","zjy")
                        .putString("key","123456")
                        .commit();
                Log.d("zjy","Data saved "+sp.getString("name","default"));


            }
        });

实验结果:

在这里插入图片描述

【2】button2

点击此按钮会从SharedPreferences中读取"name"的值,并将其设置为textView1的文本。

说明:读出button1存入的数据

核心代码:

 button2.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                textView1.setText(sp.getString("name","123"));
            }
        });

实验结果截图:

在这里插入图片描述

【3】button3

点击此按钮会尝试打开一个FileOutputStream来写入文件zjyfile.txt,写入字符串"hello"。

核心代码:

 button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                  outputStream=new FileOutputStream(file);
                } catch (FileNotFoundException e) {
                    throw new RuntimeException(e);
                }
                try {
                    outputStream.write("hello".getBytes());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        });

实验结果截图:

在这里插入图片描述

【4】button4

点击此按钮会尝试打开一个FileInputStream来读取文件zjyfile.txt,并使用BufferedReader读取第一行文本,然后将文件的编码和第一行文本设置为textView1的文本。

核心代码:

button4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               /* sp.edit()
                        .putString("name","zjy")
                        .putString("key","123456")
                        .commit();
                Log.d("zjy","Data saved "+sp.getString("name","default"));*/
                try {
                    FileInputStream inputStream=new FileInputStream(file);
                } catch (FileNotFoundException e) {
                    throw new RuntimeException(e);
                }
                try {
                    inputStream=new FileInputStream(file);
                    InputStreamReader reader=new InputStreamReader(inputStream);
                    str1= reader.getEncoding();
                    //fileReader=new FileReader(file);
                    BufferedReader bufferedReader=new BufferedReader(reader);
                    str2=bufferedReader.readLine();

                } catch (IOException e) {
                    throw new RuntimeException(e);
                }

                textView1.setText(str1+"/"+str2);
            }
        });

实验结果截图:

在这里插入图片描述

【5】button5

点击此按钮会创建一个Person对象,并使用ContentValues将该对象的信息插入到数据库中。这里使用的是自定义的MyDAO类来处理数据库操作。

核心代码:

  button5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Person person=new Person("zhangsan",20);
                ContentValues values1=new ContentValues();
                values1.put("name",person.name);
                values1.put("age",person.age);
                //db.insert("person",null,values1);
                myDAO.Myinsert(values1);

            }
        });

实验结果截图:

在这里插入图片描述

【6】button6

点击此按钮会从数据库中删除所有age字段为"18"的记录。

核心代码:

  button6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                db.delete("person","age=?",new String[]{"20"});

            }
        });

实验结果截图:

在这里插入图片描述

【7】button7

点击此按钮会更新数据库中所有age字段为"18"的记录,这里使用的是自定义的MyDAO类来处理更新操作。

核心代码:

 button7.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /*Person person=new Person("zahngsan",18);
                ContentValues values1=new ContentValues();
                //values1.put("name",person.name);
                values1.put("age",person.age);
                db.update("person",values1,"name=? AND age=?",new String[]{"zhangsan","20"});
*/

                myDAO.Myupdate();
            }
        });

实验结果截图:

在这里插入图片描述

【8】button8

点击此按钮会查询数据库中所有age字段为"20"的记录。

核心代码:

 button8.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Cursor cursor=db.query("person",null,
                        "age=?",new String[]{"20"},
                        null,null,null);


            }
        });

实验结果截图:

在这里插入图片描述

【9】button9

点击此按钮会查询数据库中所有名为"zhangsan"的记录,并将结果传递给另一个活动SqlrecycleviewActivity。

核心代码:

 button9.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //StringBuilder stringBuilder=myDAO.MyqueryAll("zhangsan");
                //textView1.setText(stringBuilder);
                Intent intent=new Intent(
                        FileMainActivity.this,SqlrecycleviewActivity.class);

                list1=myDAO.MyqueryAll("zhangsan");

                intent.putExtra("data",list1);
                startActivity(intent);
            }
        });

实验结果截图:

在这里插入图片描述

【10】button10

点击此按钮会使用Glide库从网络加载一个图片,并将其设置到imageView中。“https://www.httpbin.org/image/png”

核心代码:

 button10.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Glide.with(context)
                        .load("https://www.httpbin.org/image/png")
                        .into(imageView);
            }
        });

实验结果截图:

在这里插入图片描述

四:实验小结

button5、button6、button7和button8涉及了SQLite数据库的CRUD操作。这些操作通过自定义的MyDAO类实现,展示了如何将对象数据模型映射到数据库表,并执行插入、删除、更新和查询操作。

实验中使用了ContentValues来传递数据,这是Android提供的一个方便的类,用于将数据插入或更新到数据库中。

button10演示了如何使用Glide库从网络加载图片。这是一个常见的需求,尤其是在需要显示网络图片的应用中。需要注意的是,URL字符串的正确性对于成功加载图片至关重要。

写在最后:

也许登上这一座山,又望见更高的山,人畏惧困难便容易自困,但殊不知行走的过程,每一步都足矣丰盈此生。所以,尽量的学习,尽量的尽力,尽量的旅游,尽量的吃好东西,人生就比较美好一点点,就是这么简单。


网站公告

今日签到

点亮在社区的每一天
去签到