Android使用SQLite流水账图文记录(使用教材代码魔改自己的项目)
本文最后更新于 393 天前,其中的信息可能已经有所发展或是发生改变。

这是教材Demo里的记录项:

这是我的:

我现在要参考Demo中的实现方法,让我的注册信息保存到SQLite里面。

(1)基础代码的修改

在项目包中创建一个bean目录,在其下创建一个名为UserInfo.java的代码文件。该代码文件主要是定义一个数据库表的数据结构类,并在构造方法中对数据进行初始化。

把内容修改成自己的条目和类型:

把database和目录下的MyDBHelper也拿过来,这个java文件写着数据库增删改查的方法:

import里面把Userinfo改成自己的位置:

修改前
修改后

然后,修改DB_NAME和TABLE_NAME为数据库名和表名:

然后修改下面的条目,以和自己的条目匹配:

修改前
修改后
修改前
修改后
修改前
修改后
修改前
修改后

(2)注册页中加入SQLiteWriteActivity的代码

第一步,import加入导入UserInfo和MyDBHelper的代码,以导入用户信息模板和数据库操作方法

然后,实例化MyDBhelper:

添加两个方法以打开和关闭数据库连接:

    @Override
    protected void onStart() {
        super.onStart();
        mHelper = MyDBHelper.getInstance(this, 2);
        mHelper.openWriteLink();
    }

    @Override
    protected void onStop() {
        super.onStop();
        mHelper.closeLink();
    }

最后,在注册/登录 按钮OnClick方法中添加新建用户信息记录并写入数据库的代码:

附上我“注册”按钮的方法代码(包括写入数据库和打开注册信息页面):

public void btReg(View view) {
        EditText usrnText = (EditText) findViewById(R.id.username);
        EditText pswdText1 = (EditText) findViewById(R.id.password);
        EditText pswdText2 = (EditText) findViewById(R.id.password2);
        EditText beizhuText = (EditText) findViewById(R.id.beizhu);
        RadioGroup sexGroup = findViewById(R.id.sex);
        CheckBox c1 = findViewById(R.id.ah_cg);
        CheckBox c2 = findViewById(R.id.ah_tw);
        CheckBox c3 = findViewById(R.id.ah_sw);
        CheckBox c4 = findViewById(R.id.ah_dlq);
        CheckBox[] cbox={c1,c2,c3,c4};

        String username = usrnText.getText().toString();
        String password1 = pswdText1.getText().toString();
        String password2 = pswdText2.getText().toString();
        String sex = "";
        String income = "";
        String hobby="";
        String addition = beizhuText.getText().toString();
        if (password1.equals("")||password2.equals("")){	//判断两次密码是否为空
            Toast.makeText(getApplicationContext(),"密码不能为空",Toast.LENGTH_SHORT).show();
        }else if(password1.equals(password2)){
            Intent intent = new Intent(this, showRegMsg.class);
            Bundle bundle = new Bundle();

            for (int i = 0; i <sexGroup.getChildCount(); i++) {
                RadioButton radioButton= (RadioButton) sexGroup.getChildAt(i);
                if(radioButton.isChecked()) {
                    sex = radioButton.getText().toString();
                    break;
                }
            }

            String str="";
            for (int i = 0; i <cbox.length ; i++) {
                if(cbox[i].isChecked()){
                    str=str+cbox[i].getText().toString()+"、";
                }
            }
            if (str != ""){
                str=str.substring(0, str.length() - 1);
            }
            hobby=str;

            income = spinner.getSelectedItem().toString();

            bundle.putString("usrn",username);
            bundle.putString("pswd",password1);
            bundle.putString("sex", sex);
            bundle.putString("sr",income);
            bundle.putString("ah",hobby);
            bundle.putString("beizhu",addition);

            UserInfo userinfo = new UserInfo();
            userinfo.username=username;
            userinfo.password=password1;
            userinfo.sex=sex;
            userinfo.income=income;
            userinfo.hobby=hobby;
            userinfo.addition=addition;

            mHelper.insert(userinfo);
            Toast.makeText(getApplicationContext(),"数据库写入成功",Toast.LENGTH_SHORT).show();

            intent.putExtras(bundle);
            startActivity(intent);
        }else if (!password1.equals(password2)){
            Toast.makeText(getApplication(),"密码不一致,请重新输入",Toast.LENGTH_SHORT).show();
        }
    }

(3)添加查询/删除页面和功能

复制SQLiteReadActivity到自己的项目

还有Layout里面的xml布局两个(主要是我懒,懒得自己写了

然后,开始改 SQLiteReadActivity.java。老规矩,先改import

设置离开activity时断开数据库连接,避免因数据库一致性无法写入新数据。

onStop改成onPause

然后改一下要显示的条目:

简单读一下布局xml文件,发现用到了几个颜色,那就把他加进来,不然会报错。怎么加进来?复制粘贴,删掉重复项就好了。

教材代码
合并后的我的代码

然后,由于我的SQLiteReadActivity是复制粘贴来的,所以要在AndroidManifest.xml里面把它加进去,不然会闪退:

        <activity
            android:name=".SQLiteReadActivity"
            android:exported="true"
            tools:ignore="DuplicateActivity" />

然后,在zhuce_page加入查询按钮的Onclick方法:

再在xml中加个按钮:

(4)测试

很好,然后返回试试查询功能:

不错,再删除试试:

很好,功能都运行了。

结语

如果报错闪退,记得使用Android Studio自带的Logcat,闪退的时候会有红字记录,里面有报错的代码,方便debug

头都要秃了。

相关下载

教材Demo代码:Activity_SQLiteDatabase.zip – 蓝奏云 (lanzoui.com)

相关文章

Android Studio打开别人的项目简单指北 – 盐汽水的分享 (herek.asia)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇