欢迎访问宝典百科,专注于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实现点云点云(Point Cloud)是一种三维数据表示方法,广泛应用于三维重建、计算机视觉、增强现实(AR)和虚拟现实(VR)等领域。在Android平台上实现点云渲染,可以为开发者提供强大的三维数据可视化能力。本
    2026-03-25 android 5802浏览
  • 在移动应用开发中,数据请求是至关重要的环节。Android 平台提供了多种技术方案来实现网络通信,开发者需要根据应用场景选择合适的方法。本文将系统性地介绍 Android 中请求数据的核心技术与实践方案。核心网络请求技术方
    2026-03-25 android 5747浏览
栏目推荐
  • 以下是关于如何克隆 Android 开源项目(AOSP)代码的专业指南:Android 开源项目(AOSP)是 Android 操作系统的核心代码库,由 Google 维护。开发者可通过克隆其代码进行定制化开发或系统研究。以下是详细操作流程:一、环境准备在
    2026-02-24 android 653浏览
  • 在当今数字化时代,电脑与Android设备之间的数据交互日益频繁。许多用户在使用电脑管理Android手机时,会遇到“电脑android文件”这一术语,但对其具体含义、存储路径、格式类型及应用场景并不完全清楚。本文将从专业角度深
    2026-02-23 android 7483浏览
  • # PHP能做Android吗?PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,主要用于服务器端开发,尤其是在Web应用程序中。然而,PHP本身并不是一种适合直接用于移动应用开发的语言,尤其是在Android开发领域。本文将详细探
    2026-02-23 android 680浏览
全站推荐
  • 在当今数据爆炸的时代,无论是家庭影音中心、个人代码仓库还是小型企业文件服务器,网络附加存储(NAS)都扮演着至关重要的角色。NAS的核心功能是提供稳定、可靠且可扩展的存储空间。而虚拟硬盘(通常指通过iSCSI或虚拟
    2026-03-29 硬盘 3469浏览
  • 电脑桌面怎么扩大内存空间?这是一个常见但常被误解的问题。许多用户误以为“桌面”是电脑的物理存储空间,可以像硬盘一样随意扩展。实际上,“桌面”只是操作系统中用于显示图标、文件和快捷方式的一个虚拟区域,并
    2026-03-29 内存 5039浏览
  • ThinkPad565怎么切换显卡ThinkPad 565 是一款经典的商务笔记本电脑,其硬件配置在当年属于中高端水平。随着用户对图形性能需求的提升,部分用户希望在内置集成显卡和独立显卡之间进行切换,以满足不同使用场景的需求——例如
    2026-03-29 显卡 7993浏览
友情链接
底部分割线