VSTO 加载项连接到 MSSQL

VSTO Addin Connecting to MSSQL

我有一个 VSTO 插件。现在我正在对两个字典进行硬编码以进行开发。他们需要坚持,所以我要使用 mssql。我已经创建了 tables 和所有的东西,所以一切都在这方面完成了。但是我在处理一些事情时遇到了一些问题,所以我有几个问题:

首先,是否可以使用VSTO中的WindowsForms为数据库tables创建CRUD表单?有 2 table 并且它们不会太长。

接下来,当使用 SqlConnection 连接时,我看到的示例连接字符串没有任何意义。这是一个示例:tmpConn = new SqlConnection("server=(local)\SQLEXPRESS;Trusted_Connection=yes"); 我不确定如何制作连接字符串。现在我的数据库是本地 mssql 实例,但将来它将托管在本地网络服务器上。它现在说 SQLEXPRESS,它和 mssql 一样吗?如果不是,我如何将其更改为 mssql?如何为 mssql 构造正确的字符串以及如何进行身份验证?它是在连接字符串中还是在其他地方完成的?

倒数第二个,有没有一种简单的方法来查询具有 3 列的数据库,ID (PK)、域和目录名。并将 domain 和 dirname 放入字典中,其中 domain 是键,dirname 是值,为此不需要 ID。

这是我目前的情况:

    public void retrieveClient(SqlConnection conn)
    {
        try
        {
            using (conn)
            {
                SqlCommand command = new SqlCommand(
                  "SELECT ClientDirName, ClientEmailDomain FROM ClientTable;",
                  conn);
                conn.Open();

                SqlDataReader reader = command.ExecuteReader();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        string clientDir = reader.GetString(0);
                        string clientEmail = reader.GetString(1);
                        clientDict.Add(clientEmail, clientDir);
                    }
                }
                else
                {
                    MessageBox.Show("No rows found in ClientTable", "Rows Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                reader.Close();
            }
        }
        catch (InvalidOperationException ex)
        {
            MessageBox.Show(String.Format("Exception while accessing ClientTable: {0}", ex), "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        catch (SqlException ex)
        {
            MessageBox.Show(String.Format("Exception while accessing ClientTable: {0}", ex), "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

最后,string clientDir = reader.GetString(0)string clientEmail = reader.GetString(1) 的部分 return 是正确的值吗?正如我所说,table 有 3 个值,ID、Dir 和 Email。但如您所见,我的 SqlCommand 仅选择了 ClientDirName 和 ClientEmailDomain。这是否意味着 GetString() 方法将 return 具有 0 和 1 的方法?或者它会是 1 和 2 因为 ID 是 0?我不确定它是如何工作的,reader.GetString() 索引是基于实际的 table 还是基于 SqlCommand?

我也想知道 while (reader.Read()) 部分是否会逐行添加,以便我的 clientDict.Add() 可以正常工作。

如果可以对具有 windows 表单的数据库进行 CRUD,请给我一些指导或一个小示例。除此之外,我只需要检查我的代码以确保它在做我想做的事情。我一直在尝试测试它,但目前还有很多其他缺失的部分,所以我需要帮助。

如有任何帮助,我们将不胜感激。如果有人可以为需要身份验证的本地和网络 mssql 服务器提供一些小示例连接字符串,那将是一个巨大的帮助。我一直在到处寻找,但无法正常工作。我听说 EF 可以做到这一点,但我找不到一个可以满足我需要的示例或指南。如果有人可以分享一个可能也有帮助的,如果你使用 EF 是正确的选择。

提前致谢!

您可以将基于 VSTO 的加载项视为常规 .Net 应用程序。从 Db 的角度来看,没有任何具体的内容。唯一的区别是您的 VSTO 程序集在主机应用程序(不是独立的)中 运行。因此,我建议先阅读任何有关如何在 .net 应用程序中使用 SQL 数据库 (ADO.NET) 或使用 EF(实体框架)的好书。它会给你所有问题的答案。