Android Studio入门实战--实现数据库增删查改 备忘录实例 ...

打印 上一主题 下一主题

主题 504|帖子 504|积分 1512

目录

要求目标:
效果图:
Android studio sql 数据库查看工具
SQLiteStudio
MainActivity内容:
EditText带icon的布局文件:
界说Myhepler.java  ——用户部分——
界说注册登录变乱
注册按钮绑定插入用户记录变乱:
登录按钮绑定匹配数据库用户密码是否正确并且传值跳转Content页面变乱:
 ContentActivity:
布局xml文件:
界说Myhelper.java——备忘录数据增删查改——
长按删除数据记录:
短按编辑:
添加备忘录按钮:
onResume()函数实时更新回调函数:
全部代码:


要求目标:

              1.  数据库需要存储用户信息、及备忘录信息,
              2.  每个用户都有各自的备忘录信息,信息互不干扰
              3.  根据按钮 完成数据库 增删查改,实时更新信息

效果图:

                



Android studio sql 数据库查看工具

SQLiteStudio

下载链接
 官网           SQLiteStudio
https://sqlitestudio.pl/
在当地android studio 上 查询数据库并且复制到桌面用sqlitestudio 工具查看






结果如下:



MainActivity内容:


EditText带icon的布局文件:

                xml布局文件
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:background="@drawable/img"
  8.     tools:context=".MainActivity">
  9.     <ImageView
  10.         android:id="@+id/imageView"
  11.         android:layout_width="122dp"
  12.         android:layout_height="109dp"
  13.         android:layout_marginStart="152dp"
  14.         android:layout_marginBottom="44dp"
  15.         android:src="@drawable/userimg"
  16.         app:layout_constraintBottom_toTopOf="@+id/loginView"
  17.         app:layout_constraintStart_toStartOf="parent" />
  18.     <EditText
  19.         android:id="@+id/loginView"
  20.         android:layout_width="235dp"
  21.         android:layout_height="51dp"
  22.         android:layout_marginStart="108dp"
  23.         android:layout_marginTop="232dp"
  24.         android:background="@android:drawable/editbox_background"
  25.         android:hint=" Enter your name"
  26.         app:layout_constraintStart_toStartOf="parent"
  27.         app:layout_constraintTop_toTopOf="parent" />
  28.     <EditText
  29.         android:id="@+id/passwordView"
  30.         android:layout_width="240dp"
  31.         android:layout_height="50dp"
  32.         android:layout_marginStart="104dp"
  33.         android:layout_marginTop="36dp"
  34.         android:background="@android:drawable/editbox_background"
  35.         android:hint=" Enter your password"
  36.         app:layout_constraintStart_toStartOf="parent"
  37.         app:layout_constraintTop_toBottomOf="@+id/loginView" />
  38.     <Button
  39.         android:id="@+id/loginbutton"
  40.         android:layout_width="wrap_content"
  41.         android:layout_height="wrap_content"
  42.         android:layout_marginStart="84dp"
  43.         android:layout_marginTop="144dp"
  44.         android:text="登录"
  45.         app:layout_constraintStart_toStartOf="parent"
  46.         app:layout_constraintTop_toBottomOf="@+id/passwordView" />
  47.     <Button
  48.         android:id="@+id/registerbutton"
  49.         android:layout_width="wrap_content"
  50.         android:layout_height="wrap_content"
  51.         android:layout_marginTop="144dp"
  52.         android:layout_marginEnd="40dp"
  53.         android:text="注册"
  54.         app:layout_constraintEnd_toEndOf="parent"
  55.         app:layout_constraintTop_toBottomOf="@+id/passwordView" />
  56.     <CheckBox
  57.         android:id="@+id/checkBox"
  58.         android:layout_width="wrap_content"
  59.         android:layout_height="wrap_content"
  60.         android:layout_marginTop="68dp"
  61.         android:layout_marginEnd="36dp"
  62.         android:text="记住密码"
  63.         android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  64.         app:layout_constraintEnd_toEndOf="parent"
  65.         app:layout_constraintTop_toBottomOf="@+id/passwordView" />
  66. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码
        icon 文件
  1. package com.example.myapplication;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.content.Intent;
  4. import android.content.SharedPreferences;
  5. import android.database.sqlite.SQLiteDatabase;
  6. import android.graphics.drawable.Drawable;
  7. import android.os.Bundle;
  8. import android.text.method.PasswordTransformationMethod;
  9. import android.widget.Button;
  10. import android.widget.CheckBox;
  11. import android.widget.EditText;
  12. import android.widget.Toast;
  13. public class MainActivity extends AppCompatActivity   {
  14.     private EditText editText;
  15.     private EditText editText1;
  16.     Drawable icon;
  17.     Drawable icon1;
  18.     private CheckBox checkBox;
  19.     private  MyHelper myHelper;
  20.    
  21.     @Override
  22.     protected void onCreate(Bundle savedInstanceState) {
  23.         super.onCreate(savedInstanceState);
  24.         setContentView(R.layout.activity_main1);
  25.         editText = findViewById(R.id.loginView);
  26.         editText1 = findViewById(R.id.passwordView);
  27.         editText1.setTransformationMethod(PasswordTransformationMethod.getInstance());//密码不可见
  28.         icon = getResources().getDrawable(R.drawable.profile1);
  29.         icon1 = getResources().getDrawable(R.drawable.password);
  30.         icon.setBounds(0, 0, 80, 80);
  31.         editText.setCompoundDrawables(icon, null, null, null);
  32.         icon1.setBounds(0,0,80,80);
  33.         editText1.setCompoundDrawables(icon1, null, null, null);
  34.       
  35.       
  36.     }
  37. }
复制代码

界说Myhepler.java  ——用户部分——

       创建用户表user_table及备忘录content_table
  1. package com.example.myapplication;
  2. import android.annotation.SuppressLint;
  3. import android.content.Context;
  4. import android.database.Cursor;
  5. import android.database.sqlite.SQLiteDatabase;
  6. import android.database.sqlite.SQLiteOpenHelper;
  7. import android.widget.Toast;
  8. import androidx.annotation.Nullable;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. public class MyHelper extends SQLiteOpenHelper {
  12.     private static final String dbname = "memo.db";
  13.     private static final  String UserTableName = "user_table";
  14.     private static  final  String ContentTableName = "content_table";
  15.     private List<String> memolist = new ArrayList<>();
  16.     public MyHelper(@Nullable Context context) {
  17.         super(context,dbname, null, 2);
  18.     }
  19.     @Override
  20.     public void onCreate(SQLiteDatabase sqLiteDatabase) {
  21.         String sql_create1 = "CREATE TABLE IF NOT EXISTS "+ UserTableName +"("+"_id integer primary key autoincrement,username varchar not null,password varchar not null"+");";
  22.         sqLiteDatabase.execSQL(sql_create1);
  23.         String sql_create2 = "CREATE TABLE IF NOT EXISTS "+ ContentTableName +"("+"_id integer primary key autoincrement,username varchar not null,memotitle varchar not null"+");";
  24.         sqLiteDatabase.execSQL(sql_create2);
  25.     }
  26. }
复制代码
插入用户信息:
  1.     //注册事件 插入user记录
  2.     protected  void insert_user(user user,SQLiteDatabase sqLiteDatabase){
  3.         sqLiteDatabase.execSQL("insert into user_table "
  4.                         + "(username,password)"
  5.                         + "values(?,?)"  ,
  6.                 new String[]{user.getUsername(), user.getPassword()}
  7.         );
  8.     }
复制代码
匹配用户及密码信息:
  1.     //查询数据库 先按username 筛选记录 再与password字段匹配 ,如果不存在记录也是返回false
  2.     @SuppressLint("Range")
  3.     protected boolean queryuser(user user, SQLiteDatabase sqLiteDatabase){
  4.         Cursor cursor = sqLiteDatabase.rawQuery("select * from user_table where username = ? and password = ?", new String[]{user.getUsername(), user.getPassword()});
  5.         if(cursor.moveToNext()) {
  6.             return true;
  7.         }
  8.         return false;
  9.     }
复制代码
界说注册登录变乱

注册按钮绑定插入用户记录变乱:

  1.   myHelper = new MyHelper(MainActivity.this);
  2.         db = myHelper.getWritableDatabase();
  3.   register = findViewById(R.id.registerbutton);
  4. //注册事件
  5.   register.setOnClickListener(view -> {
  6.             user user = new user(editText.getText().toString(),editText1.getText().toString());
  7.             myHelper.insert_user(user,db);
  8.             Toast.makeText(MainActivity.this,"注册成功",Toast.LENGTH_LONG).show();
  9.         });
复制代码
登录按钮绑定匹配数据库用户密码是否正确并且传值跳转Content页面变乱:

  1. login.setOnClickListener(view -> {
  2.             user user = new user(editText.getText().toString(),editText1.getText().toString());
  3.             if (myHelper.queryuser(user,db)){
  4.                 Toast.makeText(MainActivity.this,"登陆成功",Toast.LENGTH_LONG).show();
  5.                 Intent intent = new Intent(MainActivity.this,ContentActivity.class);
  6.                 intent.putExtra("username",editText.getText().toString());
  7.                 startActivity(intent);
  8.             }else {
  9.                 Toast.makeText(MainActivity.this,"用户名或密码错误",Toast.LENGTH_LONG).show();
  10.             }
  11.         });
复制代码
 ContentActivity:

布局xml文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:orientation="vertical"
  8.     android:background="@drawable/background"
  9.     android:gravity="center"
  10.     tools:context=".ContentActivity">
  11.     <TextView
  12.         android:id="@+id/textView"
  13.         android:layout_width="401dp"
  14.         android:layout_height="39dp"
  15.         android:text="备忘录"
  16.         android:textAlignment="center"
  17.         android:textAppearance="@style/TextAppearance.AppCompat.Large" />
  18.     <ListView
  19.         android:id="@+id/listview"
  20.         android:layout_width="398dp"
  21.         android:layout_height="613dp" />
  22.     <Button
  23.         android:id="@+id/button"
  24.         android:layout_width="wrap_content"
  25.         android:layout_height="65dp"
  26.         android:background="@android:drawable/ic_input_add"
  27.         android:backgroundTint="#E1D0D0"
  28.         app:rippleColor="@color/white" />
  29. </LinearLayout>
复制代码

界说Myhelper.java——备忘录数据增删查改——


  1. //查询备忘录并且返回list
  2.     protected  List<String> queryMemo(String username,SQLiteDatabase db){
  3.         memolist.clear();
  4.         Cursor cursor = db.rawQuery("select * from content_table where username = ? ", new String[]{username});
  5.         while (cursor.moveToNext()){
  6.             memolist.add(cursor.getString(2));
  7.         }
  8.         return memolist;
  9.     }
  10.     //插入备忘录
  11.     protected void insert_title(String username ,String title ,SQLiteDatabase db){
  12.         db.execSQL("insert into content_table "
  13.                         + "(username,memotitle)"
  14.                         + "values(?,?)"  ,
  15.                 new String[]{username, title}
  16.         );
  17.     }
  18.     //删除备忘录
  19.     public void delete_content(String username ,String title ,SQLiteDatabase db){
  20.         String sql = "delete from "+ ContentTableName +" where username like '"+username+"' and memotitle like '"+title
  21.                 +"';";
  22.         db.execSQL(sql);
  23.     }
  24.     //更新备忘录
  25.     public void update_content(String username,String old_tit,String new_tit,SQLiteDatabase db){
  26.         String sql = "update "+ ContentTableName +" set memotitle = '"+new_tit+"'where username like '"
  27.                 +username+"' and memotitle like '"+old_tit+"';";
  28.         db.execSQL(sql);
  29.     }
复制代码

长按删除数据记录:


  1.   //列表点击事件
  2.         //长按
  3.         listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
  4.             @Override
  5.             public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
  6.                 final String content = ((TextView) view).getText().toString();
  7.                 AlertDialog.Builder editDialog = new AlertDialog.Builder(ContentActivity.this);
  8.                 editDialog.setTitle(content);
  9.                 editDialog.setMessage("是否删除该备忘录");
  10.                 editDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  11.                     @Override
  12.                     public void onClick(DialogInterface dialogInterface, int i) {
  13.                         myHelper.delete_content(username, content, db);
  14.                         Toast.makeText(ContentActivity.this, "数据已删除", Toast.LENGTH_LONG).show();
  15.                         onResume();
  16.                     }
  17.                 });
  18.                 editDialog.show();
  19.                 return true;
  20.             }
  21.         });
复制代码

短按编辑:


  1. //短按事件
  2.         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  3.             @Override
  4.             public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
  5.                 final String content = ((TextView) view).getText().toString();
  6.                 final EditText editText = new EditText(ContentActivity.this);
  7.                 editText.setText(memolist.get(i));
  8.                 AlertDialog.Builder editDialog = new AlertDialog.Builder(ContentActivity.this);
  9.                 editDialog.setView(editText);
  10.                 editDialog.setTitle("请重新输入内容:");
  11.                 editDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  12.                     @Override
  13.                     public void onClick(DialogInterface dialogInterface, int i) {
  14.                         String newtitle = editText.getText().toString();
  15.                         if (newtitle.length() > 0) {
  16.                             myHelper.update_content(username, content, newtitle, db);
  17.                             Toast.makeText(ContentActivity.this, "数据已存入", Toast.LENGTH_LONG).show();
  18.                             onResume();
  19.                         } else {
  20.                             Toast.makeText(ContentActivity.this, "数据为空", Toast.LENGTH_LONG).show();
  21.                         }
  22.                     }
  23.                 });
  24.                 editDialog.show();
  25.             }
  26.         });
复制代码

添加备忘录按钮:

  1. //添加备忘录按键
  2.         button = findViewById(R.id.button);
  3.         button.setOnClickListener(new View.OnClickListener() {
  4.             @Override
  5.             public void onClick(View view) {
  6.                 final EditText editText = new EditText(ContentActivity.this);
  7.                 AlertDialog.Builder editalertlog = new AlertDialog.Builder(ContentActivity.this);
  8.                 editalertlog.setTitle("请输入备忘录内容:");
  9.                 editalertlog.setView(editText);
  10.                 editalertlog.setPositiveButton("确认", new DialogInterface.OnClickListener() {
  11.                     @Override
  12.                     public void onClick(DialogInterface dialogInterface, int i) {
  13.                         String title = editText.getText().toString();
  14.                         if(title.length()>0){
  15.                             myHelper.insert_title(username,title,db);
  16.                             Toast.makeText(ContentActivity.this,"数据已添加",Toast.LENGTH_LONG).show();
  17.                             onResume();
  18.                         }else {
  19.                             Toast.makeText(ContentActivity.this,"输入数据为空",Toast.LENGTH_LONG).show();
  20.                         }
  21.                     }
  22.                 });
  23.                 editalertlog.show();
  24.             }
  25.         });
复制代码

onResume()函数实时更新回调函数:

留意:这个回调函数涉及到界面备忘录数据的表现,另外listview 需要适配器,才能绑定数据
  1. @Override
  2.     protected void onResume() {
  3.         super.onResume();
  4.         if (db ==null || !db.isOpen()) {
  5.             db = myHelper.getWritableDatabase();
  6.         }
  7.             memolist = myHelper.queryMemo(username,db);
  8.             listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,memolist));
  9.     }
复制代码
全部代码:

MainActivity.java:
  1. ackage com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.content.SharedPreferences;import android.database.sqlite.SQLiteDatabase;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.text.method.PasswordTransformationMethod;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends AppCompatActivity   {    private EditText editText;    private EditText editText1;    Drawable icon;    Drawable icon1;    private CheckBox checkBox;    private  MyHelper myHelper;    private SharedPreferences myShare;    private SQLiteDatabase db ;    private Button login;    private Button register;    @Override    protected void onStart() {        super.onStart();        myShare = getSharedPreferences("save_login",MODE_PRIVATE);        Boolean checked = myShare.getBoolean("checkBox",false);        String name = myShare.getString("username",null);        String password = myShare.getString("password",null);        if(checked){            editText.setText("");            editText1.setText("");        }else{            editText.setText(name);            editText1.setText(password);        }    }    @Override    protected void onStop() {        super.onStop();        //myHelper.closeLink();        myShare = getSharedPreferences("save_login",MODE_PRIVATE);        SharedPreferences.Editor myEdit = myShare.edit();        if(checkBox.isChecked()){            myEdit.putString("username",editText.getText().toString());            myEdit.putString("password",editText1.getText().toString());            myEdit.putBoolean("checksave",true);            myEdit.commit();        }else {            myEdit.putBoolean("checksave",false);            myEdit.clear().commit();        }    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main1);        editText = findViewById(R.id.loginView);        editText1 = findViewById(R.id.passwordView);        editText1.setTransformationMethod(PasswordTransformationMethod.getInstance());//密码不可见        icon = getResources().getDrawable(R.drawable.profile1);        icon1 = getResources().getDrawable(R.drawable.password);        icon.setBounds(0, 0, 80, 80);        editText.setCompoundDrawables(icon, null, null, null);        icon1.setBounds(0,0,80,80);        editText1.setCompoundDrawables(icon1, null, null, null);        checkBox = findViewById(R.id.checkBox);        myHelper = new MyHelper(MainActivity.this);        db = myHelper.getWritableDatabase();        login = findViewById(R.id.loginbutton);        register = findViewById(R.id.registerbutton);        login.setOnClickListener(view -> {
  2.             user user = new user(editText.getText().toString(),editText1.getText().toString());
  3.             if (myHelper.queryuser(user,db)){
  4.                 Toast.makeText(MainActivity.this,"登陆成功",Toast.LENGTH_LONG).show();
  5.                 Intent intent = new Intent(MainActivity.this,ContentActivity.class);
  6.                 intent.putExtra("username",editText.getText().toString());
  7.                 startActivity(intent);
  8.             }else {
  9.                 Toast.makeText(MainActivity.this,"用户名或密码错误",Toast.LENGTH_LONG).show();
  10.             }
  11.         });        register.setOnClickListener(view -> {            user user = new user(editText.getText().toString(),editText1.getText().toString());            myHelper.insert_user(user,db);            Toast.makeText(MainActivity.this,"注册成功",Toast.LENGTH_LONG).show();        });    }}
复制代码
ContentActivity.java
  1. package com.example.myapplication;import androidx.appcompat.app.AlertDialog;import androidx.appcompat.app.AppCompatActivity;import android.content.DialogInterface;import android.content.Intent;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class ContentActivity extends AppCompatActivity {    private ListView listView;    private String username;    private String title;    private MyHelper myHelper;    private SQLiteDatabase db;    private List<String> memolist = new ArrayList<>();    private Button button;    private TextView textView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_content);        listView = findViewById(R.id.listview);        //接受MainActivity的传值        Intent intent = getIntent();        username = intent.getStringExtra("username");        myHelper =new MyHelper(this);        textView = findViewById(R.id.textView);        textView.setText(username+"的备忘录");        //列表点击事件
  2.         //长按
  3.         listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
  4.             @Override
  5.             public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
  6.                 final String content = ((TextView) view).getText().toString();
  7.                 AlertDialog.Builder editDialog = new AlertDialog.Builder(ContentActivity.this);
  8.                 editDialog.setTitle(content);
  9.                 editDialog.setMessage("是否删除该备忘录");
  10.                 editDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  11.                     @Override
  12.                     public void onClick(DialogInterface dialogInterface, int i) {
  13.                         myHelper.delete_content(username, content, db);
  14.                         Toast.makeText(ContentActivity.this, "数据已删除", Toast.LENGTH_LONG).show();
  15.                         onResume();
  16.                     }
  17.                 });
  18.                 editDialog.show();
  19.                 return true;
  20.             }
  21.         });        //短按事件
  22.         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  23.             @Override
  24.             public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
  25.                 final String content = ((TextView) view).getText().toString();
  26.                 final EditText editText = new EditText(ContentActivity.this);
  27.                 editText.setText(memolist.get(i));
  28.                 AlertDialog.Builder editDialog = new AlertDialog.Builder(ContentActivity.this);
  29.                 editDialog.setView(editText);
  30.                 editDialog.setTitle("请重新输入内容:");
  31.                 editDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  32.                     @Override
  33.                     public void onClick(DialogInterface dialogInterface, int i) {
  34.                         String newtitle = editText.getText().toString();
  35.                         if (newtitle.length() > 0) {
  36.                             myHelper.update_content(username, content, newtitle, db);
  37.                             Toast.makeText(ContentActivity.this, "数据已存入", Toast.LENGTH_LONG).show();
  38.                             onResume();
  39.                         } else {
  40.                             Toast.makeText(ContentActivity.this, "数据为空", Toast.LENGTH_LONG).show();
  41.                         }
  42.                     }
  43.                 });
  44.                 editDialog.show();
  45.             }
  46.         });        //添加备忘录按键
  47.         button = findViewById(R.id.button);
  48.         button.setOnClickListener(new View.OnClickListener() {
  49.             @Override
  50.             public void onClick(View view) {
  51.                 final EditText editText = new EditText(ContentActivity.this);
  52.                 AlertDialog.Builder editalertlog = new AlertDialog.Builder(ContentActivity.this);
  53.                 editalertlog.setTitle("请输入备忘录内容:");
  54.                 editalertlog.setView(editText);
  55.                 editalertlog.setPositiveButton("确认", new DialogInterface.OnClickListener() {
  56.                     @Override
  57.                     public void onClick(DialogInterface dialogInterface, int i) {
  58.                         String title = editText.getText().toString();
  59.                         if(title.length()>0){
  60.                             myHelper.insert_title(username,title,db);
  61.                             Toast.makeText(ContentActivity.this,"数据已添加",Toast.LENGTH_LONG).show();
  62.                             onResume();
  63.                         }else {
  64.                             Toast.makeText(ContentActivity.this,"输入数据为空",Toast.LENGTH_LONG).show();
  65.                         }
  66.                     }
  67.                 });
  68.                 editalertlog.show();
  69.             }
  70.         });    }    /**     *     */    @Override
  71.     protected void onResume() {
  72.         super.onResume();
  73.         if (db ==null || !db.isOpen()) {
  74.             db = myHelper.getWritableDatabase();
  75.         }
  76.             memolist = myHelper.queryMemo(username,db);
  77.             listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,memolist));
  78.     }
  79.     /**     *     */    @Override    protected void onStart() {        super.onStart();    }    /**     *     */    @Override    protected void onStop() {        super.onStop();    }}
复制代码
Myhelper.java
  1. package com.example.myapplication;import android.annotation.SuppressLint;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.widget.Toast;import androidx.annotation.Nullable;import java.util.ArrayList;import java.util.List;public class MyHelper extends SQLiteOpenHelper {    private static final String dbname = "memo.db";    private static final  String UserTableName = "user_table";    private static  final  String ContentTableName = "content_table";    private List<String> memolist = new ArrayList<>();    public MyHelper(@Nullable Context context) {        super(context,dbname, null, 2);    }    @Override    public void onCreate(SQLiteDatabase sqLiteDatabase) {        String sql_create1 = "CREATE TABLE IF NOT EXISTS "+ UserTableName +"("+"_id integer primary key autoincrement,username varchar not null,password varchar not null"+");";        sqLiteDatabase.execSQL(sql_create1);        String sql_create2 = "CREATE TABLE IF NOT EXISTS "+ ContentTableName +"("+"_id integer primary key autoincrement,username varchar not null,memotitle varchar not null"+");";        sqLiteDatabase.execSQL(sql_create2);    }    @Override    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {        String drop = "DROP TABLE IF EXISTS "+ UserTableName +";";        sqLiteDatabase.execSQL(drop);        drop = "DROP TABLE IF EXISTS "+ContentTableName +";";        sqLiteDatabase.execSQL(drop);        onCreate(sqLiteDatabase);    }
  2.     //查询数据库 先按username 筛选记录 再与password字段匹配 ,如果不存在记录也是返回false
  3.     @SuppressLint("Range")
  4.     protected boolean queryuser(user user, SQLiteDatabase sqLiteDatabase){
  5.         Cursor cursor = sqLiteDatabase.rawQuery("select * from user_table where username = ? and password = ?", new String[]{user.getUsername(), user.getPassword()});
  6.         if(cursor.moveToNext()) {
  7.             return true;
  8.         }
  9.         return false;
  10.     }
  11.     //注册事件 插入user记录
  12.     protected  void insert_user(user user,SQLiteDatabase sqLiteDatabase){
  13.         sqLiteDatabase.execSQL("insert into user_table "
  14.                         + "(username,password)"
  15.                         + "values(?,?)"  ,
  16.                 new String[]{user.getUsername(), user.getPassword()}
  17.         );
  18.     }    //查询备忘录并且返回list
  19.     protected  List<String> queryMemo(String username,SQLiteDatabase db){
  20.         memolist.clear();
  21.         Cursor cursor = db.rawQuery("select * from content_table where username = ? ", new String[]{username});
  22.         while (cursor.moveToNext()){
  23.             memolist.add(cursor.getString(2));
  24.         }
  25.         return memolist;
  26.     }
  27.     //插入备忘录
  28.     protected void insert_title(String username ,String title ,SQLiteDatabase db){
  29.         db.execSQL("insert into content_table "
  30.                         + "(username,memotitle)"
  31.                         + "values(?,?)"  ,
  32.                 new String[]{username, title}
  33.         );
  34.     }
  35.     //删除备忘录
  36.     public void delete_content(String username ,String title ,SQLiteDatabase db){
  37.         String sql = "delete from "+ ContentTableName +" where username like '"+username+"' and memotitle like '"+title
  38.                 +"';";
  39.         db.execSQL(sql);
  40.     }
  41.     //更新备忘录
  42.     public void update_content(String username,String old_tit,String new_tit,SQLiteDatabase db){
  43.         String sql = "update "+ ContentTableName +" set memotitle = '"+new_tit+"'where username like '"
  44.                 +username+"' and memotitle like '"+old_tit+"';";
  45.         db.execSQL(sql);
  46.     }}
复制代码
user.java:
  1. package com.example.myapplication;
  2. public class user {
  3.     private  String username;
  4.     private  String password;
  5.     public user(String username, String password){
  6.         this.username = username;
  7.         this.password = password;
  8.     }
  9.     public String getUsername() {
  10.         return username;
  11.     }
  12.     public String getPassword() {
  13.         return password;
  14.     }
  15. }
复制代码
activity_content.xml:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:orientation="vertical"
  8.     android:background="@drawable/background"
  9.     android:gravity="center"
  10.     tools:context=".ContentActivity">
  11.     <TextView
  12.         android:id="@+id/textView"
  13.         android:layout_width="401dp"
  14.         android:layout_height="39dp"
  15.         android:text="备忘录"
  16.         android:textAlignment="center"
  17.         android:textAppearance="@style/TextAppearance.AppCompat.Large" />
  18.     <ListView
  19.         android:id="@+id/listview"
  20.         android:layout_width="398dp"
  21.         android:layout_height="613dp" />
  22.     <Button
  23.         android:id="@+id/button"
  24.         android:layout_width="wrap_content"
  25.         android:layout_height="65dp"
  26.         android:background="@android:drawable/ic_input_add"
  27.         android:backgroundTint="#E1D0D0"
  28.         app:rippleColor="@color/white" />
  29. </LinearLayout>
复制代码
activity_main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     android:background="@drawable/img"
  8.     tools:context=".MainActivity">
  9.     <ImageView
  10.         android:id="@+id/imageView"
  11.         android:layout_width="122dp"
  12.         android:layout_height="109dp"
  13.         android:layout_marginStart="152dp"
  14.         android:layout_marginBottom="44dp"
  15.         android:src="@drawable/userimg"
  16.         app:layout_constraintBottom_toTopOf="@+id/loginView"
  17.         app:layout_constraintStart_toStartOf="parent" />
  18.     <EditText
  19.         android:id="@+id/loginView"
  20.         android:layout_width="235dp"
  21.         android:layout_height="51dp"
  22.         android:layout_marginStart="108dp"
  23.         android:layout_marginTop="232dp"
  24.         android:background="@android:drawable/editbox_background"
  25.         android:hint=" Enter your name"
  26.         app:layout_constraintStart_toStartOf="parent"
  27.         app:layout_constraintTop_toTopOf="parent" />
  28.     <EditText
  29.         android:id="@+id/passwordView"
  30.         android:layout_width="240dp"
  31.         android:layout_height="50dp"
  32.         android:layout_marginStart="104dp"
  33.         android:layout_marginTop="36dp"
  34.         android:background="@android:drawable/editbox_background"
  35.         android:hint=" Enter your password"
  36.         app:layout_constraintStart_toStartOf="parent"
  37.         app:layout_constraintTop_toBottomOf="@+id/loginView" />
  38.     <Button
  39.         android:id="@+id/loginbutton"
  40.         android:layout_width="wrap_content"
  41.         android:layout_height="wrap_content"
  42.         android:layout_marginStart="84dp"
  43.         android:layout_marginTop="144dp"
  44.         android:text="登录"
  45.         app:layout_constraintStart_toStartOf="parent"
  46.         app:layout_constraintTop_toBottomOf="@+id/passwordView" />
  47.     <Button
  48.         android:id="@+id/registerbutton"
  49.         android:layout_width="wrap_content"
  50.         android:layout_height="wrap_content"
  51.         android:layout_marginTop="144dp"
  52.         android:layout_marginEnd="40dp"
  53.         android:text="注册"
  54.         app:layout_constraintEnd_toEndOf="parent"
  55.         app:layout_constraintTop_toBottomOf="@+id/passwordView" />
  56.     <CheckBox
  57.         android:id="@+id/checkBox"
  58.         android:layout_width="wrap_content"
  59.         android:layout_height="wrap_content"
  60.         android:layout_marginTop="68dp"
  61.         android:layout_marginEnd="36dp"
  62.         android:text="记住密码"
  63.         android:textAppearance="@style/TextAppearance.AppCompat.Medium"
  64.         app:layout_constraintEnd_toEndOf="parent"
  65.         app:layout_constraintTop_toBottomOf="@+id/passwordView" />
  66. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

写过一篇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表