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(实体框架)的好书。它会给你所有问题的答案。
我有一个 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(实体框架)的好书。它会给你所有问题的答案。