欢迎访问宝典百科,专注于IT类百科知识解答!
当前位置:宝典百科 >> 软件系统 >> android >> 百科详情

android连接数据库怎么用

2025-01-14 android 责编:宝典百科 3294浏览

在 Android 应用开发中,连接数据库通常有以下几种方式,具体选择取决于你的需求和数据库的类型:

android连接数据库怎么用

---

1. 本地数据库:SQLite

使用场景

适用于需要在设备上存储小型结构化数据。

实现步骤

1. 创建数据库和表

使用 `SQLiteOpenHelper` 类创建和管理数据库:

```java

public class MyDatabaseHelper extends SQLiteOpenHelper {

private static final String DB_NAME = "my_database"; // 数据库名

private static final int DB_VERSION = 1; // 数据库版本

public MyDatabaseHelper(Context context) {

super(context, DB_NAME, null, DB_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("DROP TABLE IF EXISTS users");

onCreate(db);

}

}

```

2. 操作数据库

创建一个 `MyDatabaseHelper` 实例,并使用 `getWritableDatabase()` 或 `getReadableDatabase()` 获取数据库操作对象:

```java

MyDatabaseHelper dbHelper = new MyDatabaseHelper(context);

SQLiteDatabase db = dbHelper.getWritableDatabase();

// 插入数据

ContentValues values = new ContentValues();

values.put("name", "Alice");

values.put("age", 25);

db.insert("users", null, values);

// 查询数据

Cursor cursor = db.query("users", null, null, null, null, null, null);

while (cursor.moveToNext()) {

String name = cursor.getString(cursor.getColumnIndex("name"));

int age = cursor.getInt(cursor.getColumnIndex("age"));

Log.d("DB", "Name: " + name + ", Age: " + age);

}

cursor.close();

db.close();

```

---

2. 远程数据库:MySQL 等

使用场景

需要从服务器端访问远程数据库。

实现步骤

1. 通过 API 访问数据库

Android 不能直接连接到 MySQL 等远程数据库。推荐的做法是创建一个中间层 API(如 RESTful API)来处理数据库请求。

2. 后端示例

使用 Node.js 或 PHP 创建后端 API。例如,用 PHP 编写一个接口来查询 MySQL 数据库:

```php

$conn = new mysqli("server_address", "username", "password", "database");

if ($conn->connect_error) {

die("Connection failed: " . $conn->connect_error);

}

$sql = "SELECT * FROM users";

$result = $conn->query($sql);

$data = array();

while ($row = $result->fetch_assoc()) {

$data[] = $row;

}

echo json_encode($data);

$conn->close();

?>

```

3. Android 客户端访问 API

使用 `OkHttp` 或 `Retrofit` 发送 HTTP 请求获取数据:

```java

Retrofit retrofit = new Retrofit.Builder()

.baseUrl("https://your-server.com/")

.addConverterFactory(GsonConverterFactory.create())

.build();

ApiService apiService = retrofit.create(ApiService.class);

Call> call = apiService.getUsers();

call.enqueue(new Callback>() {

@Override

public void onResponse(Call> call, Response> response) {

if (response.isSuccessful()) {

List users = response.body();

for (User user : users) {

Log.d("API", "Name: " + user.getName() + ", Age: " + user.getAge());

}

}

}

@Override

public void onFailure(Call> call, Throwable t) {

Log.e("API", "Error: " + t.getMessage());

}

});

```

4. ApiService 接口示例

```java

public interface ApiService {

@GET("getUsers.php")

Call> getUsers();

}

```

5. User 数据模型

```java

public class User {

private String name;

private int age;

public String getName() {

return name;

}

public int getAge() {

return age;

}

}

```

---

3. 使用 Room 持久化库(推荐)

Room 是 Google 提供的数据库抽象层,封装了 SQLite。

步骤

1. 在 `build.gradle` 中添加依赖:

```groovy

implementation "androidx.room:room-runtime:2.5.2"

annotationProcessor "androidx.room:room-compiler:2.5.2"

```

2. 定义实体类和 DAO:

```java

@Entity

public class User {

@PrimaryKey(autoGenerate = true)

public int id;

public String name;

public int age;

}

@Dao

public interface UserDao {

@Insert

void insert(User user);

@Query("SELECT * FROM User")

List getAllUsers();

}

```

3. 创建数据库:

```java

@Database(entities = {User.class}, version = 1)

public abstract class AppDatabase extends RoomDatabase {

public abstract UserDao userDao();

}

```

4. 使用数据库:

```java

AppDatabase db = Room.databaseBuilder(context, AppDatabase.class, "my-database").build();

UserDao userDao = db.userDao();

// 插入数据

User user = new User();

user.name = "Alice";

user.age = 25;

userDao.insert(user);

// 查询数据

List users = userDao.getAllUsers();

for (User u : users) {

Log.d("Room", "Name: " + u.name + ", Age: " + u.age);

}

```

---

根据项目的复杂度和需求选择适合的方法,Room 持久化库是目前 Google 推荐的首选方案,尤其适合本地存储需求。

本站申明:宝典百科为纯IT类百科展示网站,网站所有信息均来源于网络,若有误或侵权请联系本站!
为您推荐
  • 在Android系统的复杂生态中,Android ID(有时也被称为Android设备ID或Settings.Secure.ANDROID_ID)是一个至关重要的软件识别符。对于红米手机用户而言,无论是进行应用调试、设备管理,还是排查某些账户绑定问题,了解如何查询这个ID
    2026-02-11 android 6191浏览
  • 在探讨Android设备、应用程序或技术文档时,我们经常会遇到“Android Ver”这个缩写。对于不熟悉技术术语的用户来说,这个词可能显得有些陌生。本文将深入解析“Android Ver”的含义,并围绕其展开相关的专业结构化数据说明,
    2026-02-11 android 8321浏览
栏目推荐
  • # Android获取网卡MAC地址的方法与注意事项在Android开发中,获取设备的MAC地址是一个常见的需求,尤其是在需要设备唯一标识符或者进行网络设备配对的场景中。然而,Android系统对MAC地址的获取权限进行了严格的限制,这使得开
    2026-01-03 android 9943浏览
  • 在Android系统开发与定制过程中,将应用或文件打包到userdata分区是一个常见的需求。userdata分区通常用于存储用户安装的应用、数据及系统厂商预置的不可卸载应用。与system分区不同,userdata分区在系统更新后数据通常得以保留
    2026-01-02 android 7966浏览
  • 在Android系统中,音量调节的层级设计直接影响用户对声音控制的精细度。默认情况下,大多数Android设备将媒体、铃音、通知等音量类型划分为15个调整层级。然而,部分用户出于对更细腻音量控制的需求,或为解决某些场景下
    2026-01-02 android 7919浏览
全站推荐
  • 硬盘接口模式怎么选:从协议、形态到性能的全方位解析在构建或升级计算机系统时,硬盘的选择至关重要,而决定硬盘性能、兼容性与扩展性的核心要素之一便是其接口模式。硬盘接口是硬盘与计算机主板之间进行数据传输的
    2026-02-08 硬盘 1841浏览
  • 手机怎么查内存用了多少在智能手机深度融入日常生活的今天,内存管理成为影响用户体验的关键因素之一。内存通常分为运行内存(RAM)和存储内存(ROM):RAM负责临时运行应用,ROM则用于长期保存数据。及时了解这两类内存
    2026-02-08 内存 7208浏览
  • 怎么辨别显卡全新在电脑硬件市场中,显卡作为决定图形性能的核心部件,其新旧程度直接关系到用户的使用体验与投资回报。很多消费者在购买显卡时,常常面临“全新”与“翻新”、“二手”之间的选择困惑。本文将从专业
    2026-02-08 显卡 3826浏览
友情链接
底部分割线