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

Flutter对接远程SQL Server实现CRUD的推荐方案及入门指导

Flutter对接SQL Server实现CRUD的推荐方案

你提到的直接让Flutter连接SQL Server并非明智之举的观点完全正确。Flutter作为跨平台UI框架,核心定位是适配多端、灵活对接各类后端,直接连接数据库会带来安全风险(暴露数据库账号密码)、性能瓶颈(移动端直接执行复杂查询)、维护成本高(数据库结构变更需同步修改Flutter代码)等问题。

生产环境推荐方案:搭建中间后端服务

通过中间后端作为Flutter与SQL Server的中转层,是行业标准做法,具体落地步骤如下:

1. 选择适配的后端技术栈

根据自身熟悉程度和业务需求选择:

  • .NET/.NET Core:与SQL Server原生兼容性最佳,官方支持完善,适合快速开发数据接口
  • Node.js + Express:轻量灵活,生态丰富,适合快速搭建RESTful API
  • Python + FastAPI/Flask:语法简洁,数据处理能力强,开发效率高

2. 封装CRUD接口

为数据库操作封装标准化的RESTful接口:

  • 创建(Create):POST接口,接收Flutter端传入的数据,写入SQL Server
  • 读取(Read):GET接口,根据查询参数从数据库获取数据,返回JSON格式结果
  • 更新(Update):PUT/PATCH接口,接收更新数据,修改对应数据库记录
  • 删除(Delete):DELETE接口,根据唯一标识删除数据库中的指定记录

3. Flutter端对接后端API

在Flutter中使用http或dio包发送HTTP请求,与后端接口交互:

  • 发送POST请求提交新增数据
  • 发送GET请求获取列表或详情数据
  • 发送PUT请求更新数据
  • 发送DELETE请求删除数据

关于sql_conn包的风险

你测试的sql_conn包依赖的JDBC驱动已近10年未更新,确实不适合生产环境:

  • 存在未修复的安全漏洞隐患
  • 无法兼容新版本SQL Server的特性
  • 出现问题难以获得有效技术支持

你的测试代码(中文注释版)

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:sql_conn/sql_conn.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: "测试",
      home: TestPage(),
    );
  }
}

class TestPage extends StatefulWidget {
  const TestPage({super.key});

  @override
  _TestPageState createState() => _TestPageState();
}

class _TestPageState extends State<TestPage> {
  // 连接SQL Server
  Future<void> connect(BuildContext ctx) async {
    debugPrint("正在连接...");
    try {
      // 显示加载弹窗
      showDialog(
        context: context,
        builder: (context) {
          return const AlertDialog(
            title: Text("加载中"),
            content: CircularProgressIndicator(),
          );
        },
      );
      // 执行数据库连接
      await SqlConn.connect(
          ip: "192.168.128.176",
          port: "1433",
          databaseName: "MDCData",
          username: "AS",
          password: "112233");
      debugPrint("连接成功!");
    } catch (e) {
      debugPrint(e.toString());
    } finally {
      // 关闭加载弹窗
      Navigator.pop(context);
    }
  }

  // 读取数据库数据
  Future<void> read(String query) async {
    var res = await SqlConn.readData(query);
    debugPrint(res.toString());
  }

  // 执行写入/修改/删除操作
  Future<void> write(String query) async {
    var res = await SqlConn.writeData(query);
    debugPrint(res.toString());
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('插件测试应用'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              ElevatedButton(
                  onPressed: () => connect(context),
                  child: const Text("连接数据库")),
              ElevatedButton(
                  onPressed: () => read("SELECT * FROM IP_List"),
                  child: const Text("读取数据")),
              ElevatedButton(
                  onPressed: () => write("DELETE FROM IP_List WHERE LOC='vv1'"),
                  child: const Text("删除数据")),
              ElevatedButton(
                  onPressed: () => write(
                      "CREATE TABLE Persons (PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255),City varchar(255))"),
                  child: const Text("创建表")),
              ElevatedButton(
                  onPressed: () => write("DROP TABLE Persons"),
                  child: const Text("删除表")),
              ElevatedButton(
                  onPressed: () => SqlConn.disconnect(),
                  child: const Text("断开连接"))
            ],
          ),
        ));
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:14:57