【问题标题】:How does an application connect to a SQL Server database? [closed]应用程序如何连接到 SQL Server 数据库? [关闭]
【发布时间】:2017-03-01 20:25:14
【问题描述】:

因此,在我的工作场所,我们使用了许多应用程序,其中很多都为应用程序本身提供了自己的服务器,并为该应用程序的数据库提供了一个单独的服务器,可以在 SSMS 中进行管理。

我只是想知道,应用程序如何连接到 SQL Server 数据库?例如,当向应用程序输入信息时,它如何更新并放入与应用程序本身不同的服务器上的数据库中?

【问题讨论】:

  • 这是一个非常广泛的问题,需要花很多时间才能回答。你知道这些应用程序是用什么编程语言编写的吗?
  • 我不太确定,因为有多个我仍然不熟悉的应用程序。我想我认为所有人都有一种共同的方式。

标签: sql-server database ssms


【解决方案1】:

SQL Server 有一个名为 TDS:Tabular Data Stream 的协议,最终用于通过网络连接到服务器。

几个不同的驱动程序实现了这一点,并根据他们的偏好和标准等向应用程序提供不同的接口。

https://docs.microsoft.com/en-us/sql/connect/sql-server-drivers

【讨论】:

    【解决方案2】:

    为了借鉴@Cade Roux 的回答,我将尝试解释程序员如何连接和执行 SQL 查询到服务器。我将假设因为您使用的是 SSMS,所以您的公司是完整的 .Net 堆栈。我将使用 C# 作为演示的编程语言。请记住,这是一个高级解释,不能用作最佳实践。

    应用程序需要两个东西来执行 SQL 查询:连接字符串和要执行的 SQL 命令。以下是示例代码:

    ...(other code)...
    
    string queryS = @"Update myTable Set sqlField = 'datatoupdate' Where otherSqlField = 'whyweareupdatingthisrow'";
    string connS = @"Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;";
    
    CreateCommand(queryS, connS);
    
    
    private static void CreateCommand(string queryString,
        string connectionString)
    {
        using (SqlConnection connection = new SqlConnection(
                   connectionString))
        {
            SqlCommand command = new SqlCommand(queryString, connection);
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
    }
    

    'queryS' 是查询字符串。我假设您在使用过 SSMS 时对此很熟悉。

    'connS' 包含连接字符串。这就是允许应用程序打开连接并使用数据库执行 SQL 查询的原因。在其中,您可以看到提供了服务器和数据库名称,以及所需的凭据(用于通过 SSMS 访问数据库的凭据相同)。这允许应用程序访问数据库,即使在不同的服务器上。请注意,这只是一个通用连接字符串和other parameters can be passed into it as well

    剩下的逻辑调用一个打开连接并执行查询的函数。

    有关使用 C# 进行 SQL 查询的其他信息,请访问 here

    【讨论】:

    • 好的,我明白了,所以当用户与前端交互时,应用程序中的代码告诉它连接到哪里以及在数据库中更新哪些字段?
    • 没错。当您通过 UI(前端)发送更新的数据时,该数据将作为变量或参数发送回,并传递到查询字符串中。
    • 我现在明白了,谢谢你说得更清楚了!
    • 不客气。
    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多