安卓登录<数据库>

在这里插入图片描述

strings.xml

<resources>
    <string name="app_name">App0504</string>
    <string name="usernameInfo">用户名:</string>
    <string name="passwordInfo">密 码:</string>
    <string name="loginInfo">登录</string>
</resources>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </LinearLayout>

    <Button
        android:id="@+id/btnLogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="220dp"
        android:text="@string/loginInfo"
        android:textColor="@android:color/black"
        android:textSize="20sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginTop="140dp"
        android:text="@string/passwordInfo"
        android:textColor="@android:color/black"
        android:textSize="20sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/etPassword"
        android:layout_width="261dp"
        android:layout_height="52dp"
        android:layout_marginStart="120dp"
        android:layout_marginTop="124dp"
        android:layout_weight="1"
        android:inputType="textPassword"
        android:text="123456"
        android:textColor="@android:color/black"
        android:textSize="20dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="60dp"
        android:text="@string/usernameInfo"
        android:textColor="@android:color/black"
        android:textSize="20sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/etUsername"
        android:layout_width="260dp"
        android:layout_height="53dp"
        android:layout_marginStart="120dp"
        android:layout_marginTop="44dp"
        android:layout_weight="1"
        android:inputType="text"
        android:text="admin"
        android:textColor="@android:color/black"
        android:textSize="20sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <requestFocus />
    </EditText>

</androidx.constraintlayout.widget.ConstraintLayout>

result.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/tvUsername2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/black"
        android:textSize="20dp" />
    <TextView
        android:id="@+id/tvPassword2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/black"
        android:textSize="20dp" />

</LinearLayout>

创建用户类 User

public class User {
    private int id; // 保存用户的 ID
    private String strUsername; // 保存用户名
    private String strPassword; // 保存密码
    public User() {
    }
    public User(String username, String password) {
        this.strUsername = username;
        this.strPassword = password;
    }
    public void setUsername(String username) {
        this.strUsername = username;
    }
    public void setPassword(String password) {
        this.strPassword = password;
    }
    public int getId() {
        return id;
    }
    public String getUsername() {
        return strUsername;
    }
    public String getPassword() {
        return strPassword;
    }
}

创建用户类 DBHelper

public class DBHelper {
    private static final String DATABASE_NAME = "datastorage";// 保存数据库名称
    private static final int DATABASE_VERSION = 1; // 保存数据库版本号
    private static final String TABLE_NAME = "users"; // 保存数据表名称
    private static final String ID = "_id"; // 保存 ID 值
    private static final String USERNAME = "username"; // 保存用户名
    private static final String PASSWORD = "password"; // 保存密码
    private DBOpenHelper helper;
    private SQLiteDatabase db;
    private static class DBOpenHelper extends SQLiteOpenHelper {
        private static final String CREATE_TABLE = "create table "
                + TABLE_NAME + " ( " + ID + " integer primary key autoincrement, "
                + USERNAME + " text not null, "
                + PASSWORD + " text not null);"; // 定义创建表格的 SQL 语句
        public DBOpenHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(CREATE_TABLE);// 创建表格
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("drop table if exists " + TABLE_NAME); // 删除旧版数据表
            onCreate(db); // 创建数据表
        }
    }
    public DBHelper(Context context) {
        helper = new DBOpenHelper(context); // 创建 SQLiteOpenHelper 对象
        db = helper.getWritableDatabase(); // 获得可写的数据库
    }
    public void insert(User user) { // 向数据表中插入数据
        ContentValues values = new ContentValues();
        values.put(USERNAME, user.getUsername());
        values.put(PASSWORD, user.getPassword());
        db.insert(TABLE_NAME, null, values);
    }
    public User query(int id) { // 根据 ID 值查询数据
        User user = new User();
        Cursor cursor = db.query(TABLE_NAME, new String[] { USERNAME,
                        PASSWORD },
                "_id = " + id, null, null, null, null);
        if (cursor.getCount() > 0) { // 如果获得的查询记录条数大于 0
            cursor.moveToFirst() ; // 将游标移动到第一条记录
            user.setUsername(cursor.getString(0)); // 获得用户名的值然后进行设置
            user.setPassword(cursor.getString(1)); // 获得密码的值然后进行设置
            return user;
        }
        cursor.close(); // 关闭游标
        return null;
    }
}

完善类 MainActivity 与实现程序功能

public class MainActivity extends AppCompatActivity {

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

        final EditText username = (EditText) findViewById(R.id.etUsername); // 获得用户名控件
        final EditText password = (EditText) findViewById(R.id.etPassword); // 获得密码控件
        Button login = (Button) findViewById(R.id.btnLogin); // 获得按钮控件
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String strUsername = username.getText().toString(); // 获得用户名
                String strPassword = password.getText().toString(); // 获得密码
                User user = new User(strUsername, strPassword);
                DBHelper helper = new DBHelper(MainActivity.this);
                helper.insert(user); // 向数据表中插入数据
                Intent intent = new Intent(); // 创建 Intent 对象
                intent.setClass(MainActivity.this, SQLiteReadActivity.class);// 指定跳转到 SQLiteReadActivity
                startActivity(intent); // 实现跳转
            }
        });
    }
}

定义类 SQLiteReadActivity 与实现程序功能

public class SQLiteReadActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); // 调用父类方法
        setContentView(R.layout.result); // 设置布局文件
        TextView username = (TextView) findViewById(R.id.tvUsername2);
        TextView password = (TextView) findViewById(R.id.tvPassword2);
        DBHelper helper = new DBHelper(SQLiteReadActivity.this);
        User user = helper.query(1);
        username.setText("用户名:" + user.getUsername()); // 显示用户名
        password.setText("密 码:" + user.getPassword()); // 显示密码
    }

在 AndroidManifest.xml 文件中注册 2 个 Activity 并配置启动项

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".SQLiteReadActivity"></activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值