【问题标题】: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 有 GraphQL 和 REST 的包
数据库
然后,您的 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();