【发布时间】:2020-01-23 04:32:00
【问题描述】:
在使用标准 SQL 连接完成了这么多项目之后,即
Server=myServerAddress;Database=myDataBase;User Id=myUsername;
Password=myPassword;
我现在正在将 SQL 连接附加到项目本身。
在标准 SQL 连接中,我了解如何为 SQL 连接打开/关闭或使用“使用”、附加/创建适配器并基于该适配器填充数据集以及将数据集中的数据移动到数据表供 DataView 使用。
即
using (SqlConnection appCon = new SqlConnection(DNCS))
{
LMTF.LogMessageToFile("DB Connected Successfully");
SqlDataAdapter transDA2 = new SqlDataAdapter(DNST, appCon);
HRDevs = new DataSet();
transDA2.Fill(HRDevs, "HRDevices");
HRDT = (HRDevs.Tables[0].DefaultView).ToTable();
try
{
foreach (DataRow row in HRDT.Rows)
{
HRDevice = row["HRDevices"].ToString();
HRDName = row["HRDName"].ToString();
LMTF.LogMessageToFile("Found a device with serial : " + HRDevice + " , Belongs to property : " + HRDName);
}
}
catch(System.Exception ex)
{
LMTF.LogMessageToFile("Unable to determine HR Devices from DB. Error is : " + ex.Message);
}
}
现在,我的问题是,当我按照上图将 SQL 附加到项目本身时,我不明白这一切是如何完成的。
我知道附加 SQL 中的 DataSet 包含 Table 、 AdapterName 和 Method Name。
但是我该如何使用这些查询名称呢?如何调用这些适配器或使用方法名称来返回它保存的值?如何调用附加 SQL 的 SQL 连接名称?这让我很困惑。
谁能指引我正确的道路?
进行标准 SQL 连接与将 SQL 附加到项目中也有区别吗?
编辑 1:
【问题讨论】:
-
该连接未附加到您的项目。它只是服务器资源管理器中数据库的有用视图。这是一个方便您使用的 GUI 工具,而不必切换到 SSMS。它是视觉工作室的一部分,而不是您正在编写的应用程序的一部分。您的代码对此一无所知。您的代码可以使用连接字符串以正常方式连接到数据库。
-
啊..难怪当我尝试调用该方法时,它根本不起作用。至于我的理解,将其附加到 VS 后,连接已经为我的应用程序打开。我附加到我的项目的 DataSet 项呢?我将创建一个编辑供您查看。名称 Edit1。
-
" 将其附加到 VS 后,连接已经为我的应用程序打开了" ...不。您的应用程序单独执行。想一想……当您将代码部署为实时应用程序时,它不再有任何指向 Visual Studio 的链接。它自己在那里。因此,它依赖于 Visual Studio 中的组件是没有意义的。您可能正在使用 GUI 工具将数据集之类的东西拖到您的应用程序中,但所做的只是提供一种图形方式来自动生成一些代码。最后,代码必须仍然能够独立执行。
-
此外,数据集编辑器是另一个设计时工具。所以是的,它可以通过服务器资源管理器中的 Connection 对象连接到数据库,但这与您的应用程序无关,因为应用程序在运行时不会执行设计器代码。相反,它使用它创建的数据集(即使用设计器的结果)作为应用程序的一部分。在您正在运行的应用程序的上下文中,该数据集需要再次连接到数据库以填充数据。它使用配置文件中的标准连接字符串来做到这一点。
-
总结:不要将您用于构建应用程序的工具与实际完成的应用程序本身混淆。这些工具所做的只是让编写和生成应用程序代码变得更加容易。如果您愿意,您可以使用记事本完全手动编写完全相同的应用程序。您可以使用命令行工具编译和执行它,而无需 Visual Studio。
标签: c# html sql-server