MST

星途 面试题库

面试题:SQLite在Android应用中用户界面关联的基础操作

在Android SQLite应用里,如何通过用户界面获取输入数据,并将其插入到SQLite数据库表中?请描述主要步骤及涉及到的关键代码片段。
27.6万 热度难度
数据库SQLite

知识考点

AI 面试

面试题答案

一键面试
  1. 主要步骤
    • 设计用户界面:在布局文件(如activity_main.xml)中添加用于输入数据的视图,比如EditText用于文本输入,Button用于触发插入操作。
    • 获取输入数据:在对应的Activity中,通过findViewById方法找到布局中的视图,并获取用户输入的数据。
    • 创建数据库连接:使用SQLiteOpenHelper类及其子类来创建和管理数据库连接。
    • 插入数据到表中:通过SQLiteDatabase对象的insert方法将获取到的数据插入到数据库表中。
  2. 关键代码片段
    • 布局文件(activity_main.xml)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <EditText
        android:id="@+id/editText_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入姓名"/>

    <EditText
        android:id="@+id/editText_age"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="输入年龄"/>

    <Button
        android:id="@+id/button_insert"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="插入数据"/>
</LinearLayout>
  • Activity代码(MainActivity.java)
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private EditText editTextName;
    private EditText editTextAge;
    private Button buttonInsert;

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

        editTextName = findViewById(R.id.editText_name);
        editTextAge = findViewById(R.id.editText_age);
        buttonInsert = findViewById(R.id.button_insert);

        buttonInsert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = editTextName.getText().toString();
                String age = editTextAge.getText().toString();

                DatabaseHelper databaseHelper = new DatabaseHelper(MainActivity.this);
                SQLiteDatabase db = databaseHelper.getWritableDatabase();

                // 插入数据
                long newRowId = db.insert("users", null,
                        databaseHelper.createContentValues(name, age));
                if (newRowId != -1) {
                    Toast.makeText(MainActivity.this, "数据插入成功", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(MainActivity.this, "数据插入失败", Toast.LENGTH_SHORT).show();
                }
                db.close();
            }
        });
    }
}
  • SQLiteOpenHelper子类(DatabaseHelper.java)
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {

    private static final String DATABASE_NAME = "my_db.db";
    private static final int DATABASE_VERSION = 1;
    public static final String TABLE_NAME = "users";
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_NAME = "name";
    public static final String COLUMN_AGE = "age";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" +
                COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                COLUMN_NAME + " TEXT, " +
                COLUMN_AGE + " TEXT)";
        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 ContentValues createContentValues(String name, String age) {
        ContentValues values = new ContentValues();
        values.put(COLUMN_NAME, name);
        values.put(COLUMN_AGE, age);
        return values;
    }
}