创建一个新的Android工程,创建界面如图所示,通过用户输入的姓名和手机号码,将数据保存至数据库。可以通过相应的功能按钮实现数据库中数据的增删改查功能:点击添加将输入的姓名和电话添加至数据库;点击查询展示数据库表数据,点击修改可修改对应姓名的手机号码,点击删除清空数据库表所有数据。
时间: 2023-06-20 11:09:58 浏览: 135
好的,让我们一步一步来完成这个 Android 工程。
## 第一步:创建 Android 工程
首先,我们需要创建一个 Android 工程,可以选择 Android Studio 进行创建。
在创建工程的过程中,我们需要设置一些基本信息,如应用名称、包名、项目路径等。此处不再赘述,可以参考 Android Studio 官方文档进行创建。
## 第二步:设计界面布局
根据需求,我们需要设计一个界面布局,包括两个 EditText 控件和四个 Button 控件。
界面布局如下所示:
```
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:" />
<EditText
android:id="@+id/edit_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入姓名" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="手机号码:" />
<EditText
android:id="@+id/edit_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:hint="请输入手机号码" />
<Button
android:id="@+id/btn_add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加" />
<Button
android:id="@+id/btn_query"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询" />
<Button
android:id="@+id/btn_update"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="修改" />
<Button
android:id="@+id/btn_delete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除" />
</LinearLayout>
```
## 第三步:创建数据库
我们需要创建一个数据库,并在其中创建一个表,用于存储用户输入的数据。
首先,在 app 目录下创建一个名为 `database` 的包,并在该包下创建一个名为 `MyDatabaseHelper` 的类。该类继承自 `SQLiteOpenHelper` 类,用于创建和升级数据库。
```
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "my_db";
private static final int DB_VERSION = 1;
private static final String TABLE_NAME = "user";
private static final String COL_ID = "id";
private static final String COL_NAME = "name";
private static final String COL_PHONE = "phone";
public MyDatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE " + TABLE_NAME + " (" +
COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COL_NAME + " TEXT, " +
COL_PHONE + " TEXT)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(sql);
onCreate(db);
}
}
```
在 `MyDatabaseHelper` 类中,我们定义了数据库的名称、版本号、表名以及表中的列名。
在 `onCreate` 方法中,我们执行了创建表的 SQL 语句。
在 `onUpgrade` 方法中,我们执行了删除表的 SQL 语句,并重新创建表。
接下来,在 app 目录下创建一个名为 `model` 的包,并在该包下创建一个名为 `User` 的类。该类用于表示用户的数据模型。
```
public class User {
private int id;
private String name;
private String phone;
public User() {
}
public User(String name, String phone) {
this.name = name;
this.phone = phone;
}
public User(int id, String name, String phone) {
this.id = id;
this.name = name;
this.phone = phone;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
```
在 `User` 类中,我们定义了三个属性,分别表示用户的 id、姓名和手机号码。
## 第四步:实现数据操作功能
接下来,我们需要实现数据库的增删改查功能。
在 app 目录下创建一个名为 `dao` 的包,并在该包下创建一个名为 `UserDao` 的类。该类用于封装数据库操作的方法。
```
public class UserDao {
private SQLiteDatabase db;
public UserDao(Context context) {
MyDatabaseHelper helper = new MyDatabaseHelper(context);
db = helper.getWritableDatabase();
}
public long addUser(User user) {
ContentValues values = new ContentValues();
values.put(MyDatabaseHelper.COL_NAME, user.getName());
values.put(MyDatabaseHelper.COL_PHONE, user.getPhone());
return db.insert(MyDatabaseHelper.TABLE_NAME, null, values);
}
public List<User> getAllUsers() {
List<User> users = new ArrayList<>();
Cursor cursor = db.query(MyDatabaseHelper.TABLE_NAME, null, null, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex(MyDatabaseHelper.COL_ID));
String name = cursor.getString(cursor.getColumnIndex(MyDatabaseHelper.COL_NAME));
String phone = cursor.getString(cursor.getColumnIndex(MyDatabaseHelper.COL_PHONE));
User user = new User(id, name, phone);
users.add(user);
}
cursor.close();
return users;
}
public int updateUser(User user) {
ContentValues values = new ContentValues();
values.put(MyDatabaseHelper.COL_PHONE, user.getPhone());
String whereClause = MyDatabaseHelper.COL_NAME + "=?";
String[] whereArgs = {user.getName()};
return db.update(MyDatabaseHelper.TABLE_NAME, values, whereClause, whereArgs);
}
public int deleteUser() {
return db.delete(MyDatabaseHelper.TABLE_NAME, null, null);
}
}
```
在 `UserDao` 类中,我们定义了四个方法,分别表示添加用户、查询所有用户、修改用户信息和删除所有用户。
在 `addUser` 方法中,我们使用 `ContentValues` 类封装用户的姓名和手机号码,并使用 `insert` 方法将数据插入到数据库中。
在 `getAllUsers` 方法中,我们使用 `query` 方法查询所有用户,并将查询结果封装成一个 `List` 返回。
在 `updateUser` 方法中,我们使用 `ContentValues` 类封装用户的手机号码,并使用 `update` 方法修改用户信息。
在 `deleteUser` 方法中,我们使用 `delete` 方法删除所有用户。
## 第五步:实现界面逻辑
最后,我们需要在界面中实现数据库的增删改查功能。
在 `MainActivity` 类中,我们可以实现界面逻辑。首先,我们需要获取 EditText 和 Button 控件,并为 Button 控件设置点击事件。
```
public class MainActivity extends AppCompatActivity {
private EditText editName;
private EditText editPhone;
private Button btnAdd;
private Button btnQuery;
private Button btnUpdate;
private Button btnDelete;
private UserDao userDao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editName = findViewById(R.id.edit_name);
editPhone = findViewById(R.id.edit_phone);
btnAdd = findViewById(R.id.btn_add);
btnQuery = findViewById(R.id.btn_query);
btnUpdate = findViewById(R.id.btn_update);
btnDelete = findViewById(R.id.btn_delete);
userDao = new UserDao(this);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = editName.getText().toString();
String phone = editPhone.getText().toString();
User user = new User(name, phone);
long result = userDao.addUser(user);
if (result > 0) {
Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "添加失败", Toast.LENGTH_SHORT).show();
}
}
});
btnQuery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<User> users = userDao.getAllUsers();
if (users.size() == 0) {
Toast.makeText(MainActivity.this, "没有数据", Toast.LENGTH_SHORT).show();
} else {
StringBuilder sb = new StringBuilder();
for (User user : users) {
sb.append(user.getId()).append("、").append(user.getName()).append("、").append(user.getPhone()).append("\n");
}
Toast.makeText(MainActivity.this, sb.toString(), Toast.LENGTH_SHORT).show();
}
}
});
btnUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = editName.getText().toString();
String phone = editPhone.getText().toString();
User user = new User(name, phone);
int result = userDao.updateUser(user);
if (result > 0) {
Toast.makeText(MainActivity.this, "修改成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "修改失败", Toast.LENGTH_SHORT).show();
}
}
});
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int result = userDao.deleteUser();
if (result > 0) {
Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "删除失败", Toast.LENGTH_SHORT).show();
}
}
});
}
}
```
在 `onCreate` 方法中,我们获取了 EditText 和 Button 控件,并为 Button 控件设置点击事件。在点击事件中,我们根据用户输入的数据进行相应的数据库操作,并使用 Toast 显示操作结果。
## 总结
到此为止,我们已经完成了 Android 工程的创建和界面布局设计,以及数据库的创建和数据操作功能的实现。通过这个例子,我们可以学习到如何在 Android 应用中使用 SQLite 数据库,并实现增删改查功能。
阅读全文