You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Android应用连接在线数据库方案咨询及示例请求

Hey there! 作为第一次上手Xamarin开发Android应用的新手,你的困惑太能共情了——直接碰数据库不仅不安全,找免费又靠谱的方案也确实容易绕晕。我给你整理了一套低成本甚至完全免费的落地思路,还有实打实的代码示例,一步步来就能搞定:

一、优先推荐的免费中间层方案:Firebase Firestore

为什么首推它?因为完全不需要自己搭建服务器,Firebase提供了现成的后端服务,免费额度(Spark计划)对于个人学习项目来说完全够用——5GB存储、10GB带宽、每月10万次读操作,基本能覆盖你的需求。而且Xamarin有官方绑定的SDK,集成简单,天然通过API操作数据,根本不会暴露SQL语句,完美符合你的安全要求。

二、实现步骤 + 代码示例

1. 前期准备(Firebase控制台配置)

  • 去Firebase控制台创建新项目,添加Android应用
  • 下载自动生成的google-services.json文件,放到Xamarin Android项目的Assets文件夹中,然后右键设置它的生成操作为GoogleServicesJson
  • 在Firebase控制台开启Firestore数据库,选择“测试模式”(新手阶段先用这个,后续再改权限)

2. 安装必要的NuGet包

打开NuGet包管理器,搜索并安装以下包:

  • Xamarin.Firebase.Firestore
  • Xamarin.GooglePlayServices.Base
  • Xamarin.AndroidX.Core

3. 定义数据模型

先创建一个对应数据库集合的实体类,比如我们做一个用户数据的示例:

using Firebase.Firestore;

[FirestoreData]
public class UserData
{
    [FirestoreProperty]
    public string Name { get; set; }

    [FirestoreProperty]
    public int Age { get; set; }

    // 可以根据需求添加更多字段,比如Email、CreateTime等
}

4. 新增数据(Create操作)

这个方法会把用户数据上传到Firestore的Users集合中:

using Firebase.Firestore;
using Android.App;
using System.Threading.Tasks;

public async Task AddNewUser(string userName, int userAge)
{
    try
    {
        // 获取Firestore实例
        var firestoreDb = FirebaseFirestore.Instance;
        // 创建一个自动生成ID的文档引用(也可以指定自定义ID)
        var userDocRef = firestoreDb.Collection("Users").Document();

        // 构造数据对象
        var newUser = new UserData { Name = userName, Age = userAge };
        // 上传数据
        await userDocRef.SetAsync(newUser);

        // 操作成功提示
        Toast.MakeText(Application.Context, "用户数据新增成功!", ToastLength.Short).Show();
    }
    catch (Exception ex)
    {
        Toast.MakeText(Application.Context, $"新增失败:{ex.Message}", ToastLength.Long).Show();
    }
}

5. 查询数据(Read操作)

示例1:查询所有用户

using Firebase.Firestore;
using System.Collections.Generic;
using System.Threading.Tasks;

public async Task<List<UserData>> GetAllUsers()
{
    var userList = new List<UserData>();
    try
    {
        var firestoreDb = FirebaseFirestore.Instance;
        // 获取Users集合的所有文档
        var querySnapshot = await firestoreDb.Collection("Users").GetAsync();

        foreach (var doc in querySnapshot.Documents)
        {
            if (doc.Exists)
            {
                // 将文档转换为UserData对象
                var user = doc.ToObject<UserData>();
                userList.Add(user);
            }
        }
    }
    catch (Exception ex)
    {
        Toast.MakeText(Application.Context, $"查询失败:{ex.Message}", ToastLength.Long).Show();
    }
    return userList;
}

示例2:条件查询(比如查询年龄大于18的用户)

public async Task<List<UserData>> GetUsersOver18()
{
    var userList = new List<UserData>();
    try
    {
        var firestoreDb = FirebaseFirestore.Instance;
        // 构建条件查询:Age > 18
        var query = firestoreDb.Collection("Users").WhereGreaterThan("Age", 18);
        var querySnapshot = await query.GetAsync();

        foreach (var doc in querySnapshot.Documents)
        {
            if (doc.Exists)
            {
                var user = doc.ToObject<UserData>();
                userList.Add(user);
            }
        }
    }
    catch (Exception ex)
    {
        Toast.MakeText(Application.Context, $"查询失败:{ex.Message}", ToastLength.Long).Show();
    }
    return userList;
}
三、如果偏好SQL类数据库:免费替代方案Supabase

要是你更习惯SQL语法,推荐用Supabase——它基于PostgreSQL,有免费额度(500MB存储、每月2GB带宽),同样通过API操作数据,不会暴露SQL。简单思路:

  • 注册Supabase账号,创建项目,获取API URL和公钥
  • 安装Supabase.NET NuGet包
  • 初始化客户端并操作数据:
using Supabase;
using System.Threading.Tasks;

// 初始化Supabase客户端
var supabaseClient = new Client("你的Supabase API URL", "你的公钥");
await supabaseClient.InitializeAsync();

// 新增数据
var newUser = new { Name = "张三", Age = 25 };
await supabaseClient.From("users").Insert(newUser);

// 查询所有用户
var users = await supabaseClient.From("users").Select("*").GetAsync();
四、关键注意事项
  • 绝对不要在客户端直接连接数据库:不管是SQL还是NoSQL,直接暴露连接字符串/密钥会导致数据泄露,中间层(Firebase/Supabase的API)是必须的
  • 免费额度足够新手项目:Firebase和Supabase的免费版完全能支撑个人学习阶段的开发需求,不用着急付费
  • 后续记得锁权限:等功能跑通后,在控制台设置数据库的读写权限(比如只有认证用户才能操作),避免恶意访问

内容的提问来源于stack exchange,提问作者Alexandru M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:57:02