前段时间写了个密码管理的小程序,写出来分享一下,主要是利用Android的sqlite进行数据存储

写完发现代码有点多,各位提前给各位看官预警。。

文末我会把Android studio包和apk包连接贴出来。

首先创建sqlite数据库:

我创建了一个用户表和一个密码表

package mountain_hua.pwd;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;

/**
 * Created by dhs on 2018/3/13.
 */

public class MyDatabaseHelper extends SQLiteOpenHelper {
    //用户表
    public static final String CREATE_usersBD = "create table usersBD(" +

            "pwd1 text primary key," +
            "pwd2 text)";
    //密码表
    public static final String CREATE_pwdsBD = "create table pwdsBD(" +

            "id integer primary key autoincrement," +
            "name text," +
            "adr text," +
            "pwd text," +
            "desc text)";



    private Context mContext;

    //构造方法:第一个参数Context,第二个参数数据库名,第三个参数cursor允许我们在查询数据的时候返回一个自定义的光标位置,一般传入的都是null,第四个参数表示目前库的版本号(用于对库进行升级)
    public  MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory , int version){
        super(context,name ,factory,version);
        mContext = context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //调用SQLiteDatabase中的execSQL()执行建表语句。
        db.execSQL(CREATE_usersBD);
        db.execSQL(CREATE_pwdsBD);
        //创建成功
        //Toast.makeText(mContext, "Create succeeded", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists usersBD");
        db.execSQL("drop table if exists pwdsBD");
        onCreate(db);
    }

}

然后是登录/注册界面,首先检查用户表是否为空,如果为空的话就进入注册界面;如果不为空,则进入登录界面。


代码如下:

package mountain_hua.pwd;

import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private MyDatabaseHelper dbhelper;
    private int ck=0;//检查是否注册
    private    String pwd1;
    private    String pwd2;
    private MyDatabaseHelper dbHelper;
    private String gpwd1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        if_log();
        if(ck==1)//注册后执行
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.denglu);
            //设置按钮监听
            Button t2=(Button)findViewById(R.id.button7);
            t2.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View view) {
                    String t1=((EditText)findViewById(R.id.editText4)).getText().toString();
                    //判断密码是否正确
                    if(query1().equals(t1)){
                        Intent it2=new Intent();
                        it2.setClass(MainActivity.this,menu1.class);
                        startActivity(it2);

                    }
                    else {
                        Toast.makeText(MainActivity.this,"一级密码不对",Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
        else//未注册执行
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.zhuce1);
            //设置按钮监听
            Button t1=(Button)findViewById(R.id.button2);
            t1.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view) {
                    pwd1 = ((EditText) findViewById(R.id.editText)).getText().toString();
                    pwd2 = ((EditText) findViewById(R.id.editText2)).getText().toString();
                    //输入为空判断
                    if (pwd1.length()==0){
                        Toast.makeText(MainActivity.this,"请输入一级密码",Toast.LENGTH_SHORT).show();
                    }
                    else if (pwd2.length()==0){
                        Toast.makeText(MainActivity.this,"请输入二级密码",Toast.LENGTH_SHORT).show();
                    }else {
                    Intent it1=new Intent();
                    it1.setClass(MainActivity.this,zhuce2.class);
                    it1.putExtra("aa",pwd1);
                    it1.putExtra("bb",pwd2);
                    startActivity(it1);
                    }
                                      }
             } );
        }
    }

    //是否注册,查询用户表是否为空
    public void if_log() {
        dbhelper = new MyDatabaseHelper(this, "usersBDD", null, 1);
        SQLiteDatabase db = dbhelper.getReadableDatabase();
        int amount=0;
        Cursor c = db.rawQuery("select * from usersBD", null);
        amount=c.getCount();
        if(amount==1){
            ck=1;
        }
        c.close();
        db.close();
    }

    //登录时查询一级密码
    public String query1(){
        dbHelper = new MyDatabaseHelper(MainActivity.this,"usersBDD",null,1);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Cursor cursor = db.query("usersBD",null,null,null,null,null,null);
        //调用moveToFirst()将数据指针移动到第一行的位置。
        if (cursor.moveToFirst()){
            do {
                //然后通过Cursor的getColumnIndex()获取某一列中所对应的位置的索引
                gpwd1 = cursor.getString(cursor.getColumnIndex("pwd1"));
            }while(cursor.moveToNext());
        }
        cursor.close();
        return gpwd1;
    }

}

然后是注册界面:用户输入一级密码和二级密码进行注册,并确认。注册成功后自动跳入登录界面,并且下次再进入程序后,直接进入登录界面,不会再出现注册界面,因为用户表不为空。

package mountain_hua.pwd;

import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Created by dhs on 2018/3/12.
 */

public class zhuce2 extends AppCompatActivity {
    private MyDatabaseHelper dbHelper;
    private int ck=0;
    //注册对话框:
    private DialogInterface.OnClickListener click1=new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface arg0,int arg1)
        {

            //确认注册后操作:
            dbHelper = new MyDatabaseHelper(zhuce2.this,"usersBDD",null,1);
            SQLiteDatabase db = dbHelper.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put("pwd1", getIntent().getStringExtra("aa"));
            values.put("pwd2", getIntent().getStringExtra("bb"));
            //insert()方法中第一个参数是表名,第二个参数是表示给表中未指定数据的自动赋值为NULL。第三个参数是一个ContentValues对象
            db.insert("usersBD",null,values);
            Toast.makeText(zhuce2.this,"注册成功,即将进入登录界面",Toast.LENGTH_SHORT).show();
            Intent it3=new Intent();
            it3.setClass(zhuce2.this,MainActivity.class);
            startActivity(it3);
                //此处应该销毁当前activity


        }
    };
    //取消对话框
    private DialogInterface.OnClickListener click2=new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface arg0,int arg1)
        {
            arg0.cancel();
        }
    };
    //
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.zhuce2);
        TextView p1=(TextView)findViewById(R.id.textView3);
        String p11 = getIntent().getStringExtra("aa");
        p1.setText(p11);
        TextView p2=(TextView)findViewById(R.id.textView5);
        String p22 = getIntent().getStringExtra("bb");
        p2.setText(p22);
        //返回按钮监听
        Button b1=(Button)findViewById(R.id.button);
        b1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {//内容
               finish();
            }
        } );
        //注册按钮监听
        Button b3=(Button)findViewById(R.id.button3);
        b3.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {//内容
                 if_log();
            if(ck==1){
                Toast.makeText(zhuce2.this,"您已经注册过了,请结束程序后进行登录!",Toast.LENGTH_LONG).show();
            }
            else {
                showdialog(view);
            }
            }
        } );
    }
    //设置对话框
    public void showdialog(View view){
        AlertDialog.Builder alertdialogbuilder=new AlertDialog.Builder(this);
        alertdialogbuilder.setMessage("确认注册?");
        alertdialogbuilder.setPositiveButton("确定", click1);
        alertdialogbuilder.setNegativeButton("取消", click2);
        AlertDialog alertdialog1=alertdialogbuilder.create();
        alertdialog1.show();
    }
    //是否注册,查询用户表是否为空
    public void if_log() {
        dbHelper = new MyDatabaseHelper(this, "usersBDD", null, 1);
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        int amount=0;
        Cursor c = db.rawQuery("select * from usersBD", null);
        amount=c.getCount();
        if(amount==1){
            ck=1;
        }
        c.close();
        db.close();
    }
}

登录进去后,进入目录一,用户可以在此添加密码,可以看到我已经添加了很多密码了。


代码如下:

package mountain_hua.pwd;

import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

/**
 * Created by dhs on 2018/3/13.
 */

public class menu1 extends AppCompatActivity {
    private   MyDatabaseHelper dbHelper;
    String rr;
    ArrayList pd=new ArrayList();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu1);
        pd.add("这里是您的私人密码小本本哦");
        query2();
        //适配器
        final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                menu1.this,
                android.R.layout.simple_list_item_1,
                android.R.id.text1,
                pd
        );
        //
        ListView listView= (ListView) findViewById(R.id.listview1);
        listView.setAdapter(arrayAdapter);
        //监听
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //点击后的操作
                if(position!=0) {
                    rr = arrayAdapter.getItem(position);
                    Intent intent = new Intent();
                    intent.setClass(menu1.this, menu2_1.class);
                    intent.putExtra("cc", rr);//传出adr
                    intent.putExtra("pp",String.valueOf(position));//传出位置0,1,2.。。
                    startActivity(intent);
                    Toast.makeText(menu1.this, arrayAdapter.getItem(position),
                            Toast.LENGTH_SHORT).show();
                }

            }
        });
        //添加按钮
        Button b3=(Button)findViewById(R.id.button8);
        b3.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {//内容
                Intent intent = new Intent();
                intent.setClass(menu1.this,menu2.class);
                startActivity(intent);

            }
        } );
    }
    public void query2(){
        dbHelper = new MyDatabaseHelper(menu1.this,"usersBDD",null,1);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Cursor cursor = db.rawQuery("select * from pwdsBD", null);
        //调用moveToFirst()将数据指针移动到第一行的位置。
        while (cursor.moveToNext()) {
            String adrs = cursor.getString(2);//获取第3列的值adr,第一列的索引从0开始
            int id=cursor.getInt(0);
            if (id!=0) {
                pd.add(adrs);
            }
        }
        cursor.close();
        db.close();
    }
    //刷新listview
    @Override
    protected void onResume() {
        super.onResume();
        pd.clear();
        pd.add("这里是您的私人密码小本本哦");
        query2();
    //适配器
        final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                menu1.this,
                android.R.layout.simple_list_item_1,
                android.R.id.text1,
                pd
        );
        //
        ListView listView= (ListView) findViewById(R.id.listview1);
        listView.setAdapter(arrayAdapter);
    }

}

然后可以添加密码:


点击添加密码进入添加密码页面,代码如下:

package mountain_hua.pwd;

import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

/**
 * Created by dhs on 2018/3/14.
 */

public class menu2 extends AppCompatActivity {
    private   MyDatabaseHelper pwdsDB;
    private    String gadr;
    private    String gname;
    private    String gpwd;
    private    String gdesc;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu2);
        //注册监听
        //确认按钮
        Button b3=(Button)findViewById(R.id.button6);
        b3.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {//内容
                gadr = ((EditText) findViewById(R.id.editText3)).getText().toString();
                gname = ((EditText) findViewById(R.id.editText5)).getText().toString();
                gpwd = ((EditText) findViewById(R.id.editText6)).getText().toString();
                gdesc = ((EditText) findViewById(R.id.editText7)).getText().toString();
                if(feikong()==1)//判断用户名密码非空
                {
                pwdsDB = new MyDatabaseHelper(menu2.this,"usersBDD",null,1);
                SQLiteDatabase db = pwdsDB.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put("adr", gadr);
                values.put("name", gname);
                values.put("pwd", gpwd);
                values.put("desc", gdesc);
                //insert()方法中第一个参数是表名,第二个参数是表示给表中未指定数据的自动赋值为NULL。第三个参数是一个ContentValues对象
                db.insert("pwdsBD",null,values);
                Toast.makeText(menu2.this,"添加成功",Toast.LENGTH_SHORT).show();
                finish();
                }
            }
        } );
        //取消按钮
        Button b4=(Button)findViewById(R.id.button10);
        b4.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {//内容
                finish();
            }
        } );
    }
    //name和pwd非空算法
    public int feikong(){
        int i=1;
        if(gname.length()==0){
            i=0;
            Toast.makeText(menu2.this,"用户名不能为空",Toast.LENGTH_SHORT).show();
        }
        else
            if(gpwd.length()==0){
                i=0;
                Toast.makeText(menu2.this,"密码不能为空",Toast.LENGTH_SHORT).show();
            }
        return i;
    }
}

添加成功后,返回主页面就可以看到刚刚添加的密码。点击刚刚添加的密码可以进入详细信息页面,用textview.setKeyListener(null)方法设置密码不可修改,我加密了密码的中间字母,只能看到首字母和末尾的字母,在次可以选择选择修改(查看)或者删除,均需输入二级密码。


代码如下:

package mountain_hua.pwd;

import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.util.ArrayList;

import static android.R.id.input;

/**
 * Created by dhs on 2018/3/20.
 */

public class menu2_1 extends AppCompatActivity{
    private MyDatabaseHelper dbHelper;
    private String gadr;//传入adr
    private String ard;
    private String name;
    private String pwd;
    private String desc;
    private String gpwd2;
    private String pos;
    private int ppp;
    int pp;
    private ArrayList idList=new ArrayList();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu2);
        gadr=getIntent().getStringExtra("cc");//传入adr
        pos=getIntent().getStringExtra("pp");
        pp=Integer.valueOf(pos)-1;//传入位置
        query323();
        query3();
        EditText ed3=(EditText)findViewById(R.id.editText3);
        ed3.setText(ard);
        ed3.setKeyListener(null);
        EditText ed5=(EditText)findViewById(R.id.editText5);
        ed5.setText(name);
        ed5.setKeyListener(null);
        EditText ed6=(EditText)findViewById(R.id.editText6);
        ed6.setText(jiami(pwd));
        ed6.setKeyListener(null);
        EditText ed7=(EditText)findViewById(R.id.editText7);
        ed7.setText(desc);
        ed7.setKeyListener(null);

        //查看明文密码
        Button b6=(Button)findViewById(R.id.button6);
        b6.setText("查看/修改");
        b6.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {//内容
            query2();
            dialog();
            }
        } );
        //删除按钮
        Button b10=(Button)findViewById(R.id.button10);
        b10.setText("删除此密码");
        b10.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {//内容
            query2();
            dialog2();
            }
        } );
    }
    //查询
    public void query3(){
        dbHelper = new MyDatabaseHelper(menu2_1.this,"usersBDD",null,1);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Cursor cursor = db.rawQuery("select * from pwdsBD", null);
        //调用moveToFirst()将数据指针移动到第一行的位置。
        while (cursor.moveToNext()) {
             pwd= cursor.getString(3);//获取第3列的值,第一列的索引从0开始
            name=cursor.getString(1);
            ard=cursor.getString(2);
            desc=cursor.getString(4);
            ppp=cursor.getInt(0);//获取自增的ID
            if(idList.get(pp).equals(ppp)){
                break;
            }
        }
        cursor.close();
        db.close();
    }
    //查看和修改的对话框
    public void dialog(){
        final EditText et = new EditText(this);
        final AlertDialog dialog = new AlertDialog.Builder(menu2_1.this)
                .setTitle("请输入二级密码")
                .setPositiveButton("确定", null)
                .setView(et)
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                }).create();
//这里必须要先调show()方法,后面的getButton才有效
        dialog.show();

        dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String input = et.getText().toString();
                if (!input.equals(gpwd2)) {
                    Toast.makeText(getApplicationContext(), "二级密码不对!" , Toast.LENGTH_SHORT).show();
                    return;
                }
                else {
                    Intent intent = new Intent();
                    intent.putExtra("dd", gadr);
                    intent.putExtra("po", String.valueOf(idList.get(pp)));
                    intent.setClass(menu2_1.this, menu2_2.class);
                    startActivity(intent);
                    finish();
                }
                dialog.dismiss();
            }
        });

    }

    //删除的对话框
    public void dialog2(){
        final EditText et = new EditText(this);
        final AlertDialog dialog = new AlertDialog.Builder(menu2_1.this)
                .setTitle("请输入二级密码")
                .setPositiveButton("确认删除", null)
                .setView(et)
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                }).create();
//这里必须要先调show()方法,后面的getButton才有效
        dialog.show();

        dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String input = et.getText().toString();
                if (!input.equals(gpwd2)) {
                    Toast.makeText(getApplicationContext(), "二级密码不对!" , Toast.LENGTH_SHORT).show();
                    return;
                }
                else {
                   //删除表操作
                    query4();
                    finish();
                    Toast.makeText(getApplicationContext(), "删除成功!" , Toast.LENGTH_SHORT).show();
                }
                dialog.dismiss();
            }
        });

    }

    //得到二级密码
    public String query2(){
        dbHelper = new MyDatabaseHelper(menu2_1.this,"usersBDD",null,1);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Cursor cursor = db.query("usersBD",null,null,null,null,null,null);
        //调用moveToFirst()将数据指针移动到第一行的位置。
        if (cursor.moveToFirst()){
            do {
                //然后通过Cursor的getColumnIndex()获取某一列中所对应的位置的索引
                gpwd2 = cursor.getString(cursor.getColumnIndex("pwd2"));
            }while(cursor.moveToNext());
        }
        cursor.close();
        return gpwd2;
    }
    //删除表
    public void query4(){
        dbHelper = new MyDatabaseHelper(menu2_1.this,"usersBDD",null,1);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        db.delete("pwdsBD","id=?",new String[] {String.valueOf(idList.get(pp))});
        query32();
        db.close();
    }
    //创建数组
    public void query323() {
        dbHelper = new MyDatabaseHelper(menu2_1.this, "usersBDD", null, 1);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Cursor cursor = db.query("pwdsBD", null, null, null, null, null, null);
        if (cursor != null && cursor.getCount() > 0) {
            while(cursor.moveToNext())
                idList.add(cursor.getInt(0));
        }
        cursor.close();
        db.close();
    }
    //修改ID,用于删除后执行
    public void query32(){
        dbHelper = new MyDatabaseHelper(menu2_1.this,"usersBDD",null,1);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Cursor cursor = db.query("pwdsBD",null,null,null,null,null,null);
        if(cursor != null && cursor.getCount()>0){
            idList.removeAll(idList);
            while(cursor.moveToNext())
                idList.add(cursor.getString(0));
        }
        cursor.close();
        db.close();
    }
    //加密小算法
    public String jiami(String ss){
        int len=ss.length();
        String after;
        String aa="*";
        after = ss.charAt(0)+aa;
        if(ss.length()>=3) {
            for (int i = 1; i < len - 2; i++) {
                after = after + aa;
            }
            after = after + ss.charAt(len - 1);
        }
        return after;
    }
}

然后是修改页面:此时可以看到全部密码信息,并且能进行修改。

代码如下:

package mountain_hua.pwd;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

/**
 * Created by dhs on 2018/3/20.
 */

public class menu2_2 extends AppCompatActivity {
    private   MyDatabaseHelper pwdsDB;
    private    String ggadr;
    private    String gadr;
    private    String gname;
    private    String gpwd;
    private    String gdesc;
    private String ard;
    private String name;
    private String pwd;
    private String desc;
    private String pos;
    private int poss;
    private int id;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu2);
        ggadr=getIntent().getStringExtra("dd");//传入adr
        pos=getIntent().getStringExtra("po");
        poss=Integer.valueOf(pos);
        query3();
        EditText ed3=(EditText)findViewById(R.id.editText3);
        ed3.setText(ard);
        EditText ed5=(EditText)findViewById(R.id.editText5);
        ed5.setText(name);
        EditText ed6=(EditText)findViewById(R.id.editText6);
        ed6.setText(pwd);
        EditText ed7=(EditText)findViewById(R.id.editText7);
        ed7.setText(desc);
        //注册监听
        //确认按钮
        Button b3=(Button)findViewById(R.id.button6);
        b3.setText("确认修改");
        b3.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {//内容,应该为更新表
                gadr = ((EditText) findViewById(R.id.editText3)).getText().toString();
                gname = ((EditText) findViewById(R.id.editText5)).getText().toString();
                gpwd = ((EditText) findViewById(R.id.editText6)).getText().toString();
                gdesc = ((EditText) findViewById(R.id.editText7)).getText().toString();
                if(feikong()==1) {
                    pwdsDB = new MyDatabaseHelper(menu2_2.this, "usersBDD", null, 1);
                    SQLiteDatabase db = pwdsDB.getWritableDatabase();
                    ContentValues values = new ContentValues();
                    values.put("adr", gadr);
                    values.put("name", gname);
                    values.put("pwd", gpwd);
                    values.put("desc", gdesc);
                    db.update("pwdsBD", values, "id=?", new String[]{String.valueOf(poss)});
                    if (gname.equals(name) & (gadr.equals(ard)) && gpwd.equals(pwd) & gdesc.equals(desc)) {
                        Toast.makeText(menu2_2.this, "您未作出修改", Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(menu2_2.this, "修改成功", Toast.LENGTH_SHORT).show();
                    }
                    finish();
                }
            }
        } );
        //取消按钮
        Button b4=(Button)findViewById(R.id.button10);
        b4.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {//内容
                finish();
            }
        } );
    }
    public void query3() {
        pwdsDB = new MyDatabaseHelper(menu2_2.this, "usersBDD", null, 1);
        SQLiteDatabase db = pwdsDB.getWritableDatabase();
        Cursor cursor = db.rawQuery("select * from pwdsBD", null);
        //调用moveToFirst()将数据指针移动到第一行的位置。
        while (cursor.moveToNext()) {
            pwd = cursor.getString(3);//获取第3列的值,第一列的索引从0开始
            name = cursor.getString(1);
            ard = cursor.getString(2);
            desc = cursor.getString(4);
             id=cursor.getInt(0);
            if (id==poss){
                break;
            }
        }
    }
    //name和pwd非空算法
    public int feikong(){
        int i=1;
        if(gname.length()==0){
            i=0;
            Toast.makeText(menu2_2.this,"用户名不能为空",Toast.LENGTH_SHORT).show();
        }
        else
        if(gpwd.length()==0){
            i=0;
            Toast.makeText(menu2_2.this,"密码不能为空",Toast.LENGTH_SHORT).show();
        }
        return i;
    }
}

期间遇到了一个小问题,就是在数据库自增段进行删除时,比如1,2,3,4把其中的3删除了,变为1,2,4;然后根据listview来查询出现了问题,本来想查询删除后的4号,可是listview上还是3号,于是我增加了一个Arraylist来保存删除后的1,2,4。每进行一次删除操作,就重新把数据库的自增段遍历给Arraylist,通过Arraylist解决了问题。

Android studio包,用Android studio能直接打开

APK文件,可直接在安卓手机上安装,绿色无毒

猜你喜欢

转载自blog.csdn.net/mountain_hua/article/details/80549328