当前位置:首页 > 行业动态 > 正文

安卓开发过程怎么连接数据库

安卓连接数据库的实现方式

本地数据库(SQLite)

SQLite 是安卓内置的轻量级数据库,适合存储少量结构化数据。

安卓开发过程怎么连接数据库

安卓开发过程怎么连接数据库

步骤 说明 代码示例
创建数据库帮助类 继承 SQLiteOpenHelper,用于创建和升级数据库 java<br>public class DBHelper extends SQLiteOpenHelper {<br> public DBHelper(Context context) {<br> super(context, "app.db", null, 1);<br> }<br> @Override<br> public void onCreate(SQLiteDatabase db) {<br> db.execSQL("CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT)");<br> }<br> @Override<br> public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}<br>}
操作数据 通过 SQLiteDatabase 增删改查 java<br>DBHelper helper = new DBHelper(context);<br>SQLiteDatabase db = helper.getWritableDatabase();<br>// 插入<br>db.execSQL("INSERT INTO user (name) VALUES (?)", new String[]{"Alice"});<br>// 查询<br>Cursor cursor = db.rawQuery("SELECT FROM user", null);<br>while (cursor.moveToNext()) {<br> int id = cursor.getInt(0);<br> String name = cursor.getString(1);<br>}<br>cursor.close();

远程数据库(如 MySQL/PostgreSQL)

需通过网络请求连接服务器端的数据库,通常配合 Web 服务使用。

技术选型 说明 代码示例
网络请求 使用 Retrofit/OkHttp 发送 HTTP 请求 java<br>Retrofit retrofit = new Retrofit.Builder()<br> .baseUrl("https://example.com/api/")<br> .addConverterFactory(GsonConverterFactory.create())<br> .build();<br>ApiService service = retrofit.create(ApiService.class);<br>// 定义接口<br>interface ApiService {<br> @POST("/user")<br> Call<ResponseBody> addUser(@Body User user);<br>}
数据处理 解析 JSON 并存储到本地缓存(如 Room) java<br>// 接收服务器返回的数据<br>Call<User> call = service.getUser(1);<br>call.enqueue(new Callback<User>() {<br> @Override<br> public void onResponse(Call<User> call, Response<User> response) {<br> if (response.isSuccessful()) {<br> User user = response.body();<br> // 存入 Room 数据库<br> userDao.insert(user);<br> }<br> }<br> @Override<br> public void onFailure(Call<User> call, Throwable t) {}<br>});

使用 ORM 框架(如 Room)

Room 是谷歌提供的抽象层,简化 SQLite 操作并支持编译时校验。

安卓开发过程怎么连接数据库

组件 说明 代码示例
实体类 定义数据表结构 java<br>@Entity(tableName = "user")<br>public class User {<br> @PrimaryKey(autoGenerate = true)<br> public int id;<br> @ColumnInfo(name = "name")<br> public String name;<br>}
DAO 接口 定义数据库操作方法 java<br>@Dao<br>public interface UserDao {<br> @Insert<br> void insert(User user);<br> @Query("SELECT FROM user WHERE id = :userId")<br> User getUserById(int userId);<br>}
数据库类 构建抽象数据库对象 java<br>@Database(entities = {User.class}, version = 1)<br>public abstract class AppDatabase extends RoomDatabase {<br> public abstract UserDao userDao();<br>}
使用方式 通过实例操作数据 java<br>AppDatabase db = Room.databaseBuilder(context, AppDatabase.class, "app.db").build();<br>UserDao userDao = db.userDao();<br>userDao.insert(new User(0, "Bob"));

云数据库(如 Firebase Firestore)

无需自建服务器,直接使用云端数据库服务。

步骤 说明 代码示例
添加依赖 build.gradle 中配置 groovy<br>implementation 'com.google.firebase:firebase-firestore:24.0.0'
初始化 在应用启动时初始化 Firebase java<br>FirebaseApp.initializeApp(this);
数据操作 使用 API 进行增删改查 java<br>// 添加数据<br>Map<String, Object> user = new HashMap<>();<br>user.put("name", "Charlie");<br>FirebaseFirestore.getInstance().collection("users").add(user);<br>// 查询数据<br>FirebaseFirestore.getInstance().collection("users").get().addOnCompleteListener(task -> {<br> if (task.isSuccessful()) {<br> for (DocumentSnapshot doc : task.getResult().getDocuments()) {<br> Log.d("Firestore", "User: " + doc.getString("name"));<br> }<br> }<br>});

常见问题与解答

问题1:如何选择本地数据库和远程数据库?

  • 本地数据库(SQLite/Room):适合存储敏感数据(如用户登录信息)、离线可用数据或轻量级数据。
  • 远程数据库:适合需要多端同步、海量数据存储或复杂查询的场景(如社交应用、电商应用)。

问题2:如何处理网络请求的线程问题?

  • 解决方案:使用异步任务(如 AsyncTaskCoroutine 或 RxJava)处理网络请求,避免阻塞主线程。
  • 示例(Kotlin Coroutine)
    GlobalScope.launch(Dispatchers.IO) {
        val result = service.getUser(1).execute()
        withContext(Dispatchers.Main) {
            // 更新 UI
        }
    }