【问题标题】:Using SQL Server with Dart将 SQL Server 与 Dart 一起使用
【发布时间】:2020-07-29 02:01:15
【问题描述】:

我还没有找到很好的答案,所以我想尝试一下。将 Microsoft SQL Server 与 Dart 结合使用的最佳方式是什么?我需要它能够从基本上任何 OS Web 和移动设备上使用它。我觉得最好的方法可能是 GraphQL,但我对它没有经验。我见过很多说 .NET API 的东西,但我不确定如何将 .NET API 与 Dart 一起使用。提前谢谢你。

【问题讨论】:

    标签: c# .net sql-server flutter dart


    【解决方案1】:

    “最好的方法”:没有灵丹妙药,你必须决定使用什么框架和工具。但我将给出一个简单的示例,客户端应用程序通常如何连接到数据库。最基本的例子:

    客户端应用程序

    客户端应用程序可以是用户通常使用的任何应用程序。一些例子:

    • 移动应用程序(用本机、Dart、Xamarin 等编写)
    • 桌面应用程序(Electron、WPF、...)
    • 网站应用程序(Angular、React、Vue 等)
    • ...

    API

    API 用于检索数据和更改数据。但它也会处理身份验证、授权、日志记录、执行业务逻辑......

    API 可以是您想要的任何技术。在您的示例 .net 核心中。 重要的是您的客户端应用程序可以与您的 api 通信。 使用 GraphQL、REST(JSON、XML、...)、...

    Dart 有 GraphQLREST 的包

    数据库

    然后,您的 API 将在您选择的数据库上执行查询、插入、更新、删除和存储过程。在您的示例 SQL Server 中。

    根据您的技能、对框架的了解以及您希望如何部署事物,有多种设置方法的可能性。

    您希望如何部署它也会限制您的选择。对于您的 API:

    • 无服务器 API(通过 Azure Functions、AWS Lambda 等)
    • 云网站(Azure Web 应用程序,...)
    • 网站托管在本地
    • Docker 容器
    • ...

    在现实生活场景中,防火墙、应用程序网关、虚拟网络、集群等通常会变得更加复杂......

    【讨论】:

      【解决方案2】:

      你可以在你的服务器上安装一个 Sql Server Socket:

      https://github.com/nippur72/SqlServerSocket

      在安装了SQL Server的服务器机器上后台安装并执行SqlServerSocket.exe。

      另外,你需要一个客户:

      https://github.com/nippur72/SqlServerSocket/tree/master/DartClient

      您可以尝试一些直接连接到您的 DDBB 的连接和查询:

      // creates a connection 
      var conn = new 
      SqlConnection("SERVER=localhost;Database=mydb;Trusted_connection=yes");
      
      // open connection
      await conn.open();
      
      // runs a query returning a single value
      var howmany = await conn.queryValue("SELECT COUNT(*) FROM Customers");
      
      // runs a query returning a single row
      var myFirstCustomer = await conn.querySingle("SELECT name,age FROM Custormers");
      print(myFirstCustomer["name"]);
      
      // runs a query returning all rows
      var customers = await conn.query("SELECT TOP 10 name,age FROM Custormers");
      for(var customer in customers)
      {
         print(customer["name"]);
      }
      
      // execute a command, returning the number of rows affected
      var n = await conn.execute("UPDATE Customers SET age=0");
      print("zeroed $n customers");
      
      // disconnect
      await conn.close();
      

      【讨论】:

        猜你喜欢
        • 2019-11-15
        • 1970-01-01
        • 2014-06-24
        • 1970-01-01
        • 1970-01-01
        • 2019-03-23
        • 2015-12-22
        • 2015-11-26
        • 2011-09-02
        相关资源
        最近更新 更多