如何在运行时以编程方式从本地数据库获取连接字符串?时间:2019-06-01 标签:c#winforms
Posted
技术标签:
【中文标题】如何在运行时以编程方式从本地数据库获取连接字符串?时间:2019-06-01 标签:c#winforms【英文标题】:how to programmatically get connection string from local database at run time? c# winforms 【发布时间】:2022-01-20 04:06:07 【问题描述】:我已经使用 Winforms (c#) 以编程方式创建了一个本地数据库,并向其中添加了表、存储过程,并存储在用户的首选位置。现在,我只想让我的 Winforms 应用程序使用它来访问它,而无需打开 Visual Studio 或 SSMS 来获取该数据库的连接字符串。
我的尝试: 我确实打开了 Visual Studio 以获取数据库的连接字符串以将其添加到 WinForms 应用程序的连接字符串中,并且我想用它进行交易。
有没有办法以编程方式从 Winforms 应用程序中检索用户选择的数据库的连接字符串?
喜欢,
-
用户从他的 WinForms 应用程序中选择已创建的 localdatabase.mdf 的位置。
应用程序检索连接字符串,以便他可以使用它连接到数据库。
检索可以是仅检索数据库的Data Source
等部分。我可以设法用它建立连接字符串。就像使用 Initial Catalog
的文件名并使用字符串添加 Integrated security
。
有关此的任何想法都会有所帮助。谢谢各位。
【问题讨论】:
所以你想在连接到数据库之前从数据库中查询一些东西......?这有意义吗?或者我在这里误解了什么......?连接字符串是访问的关键,所以你需要知道它。它有一个模式,替换其中的变量,如 DB-Location、Security 等,一切顺利 @dba,我创建了位于master
的数据库,该数据库具有连接字符串=>Server=localhost;Integrated security=SSPI;database=master
,之后我想连接到创建的具有Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=MyAppDatabase.mdf;Integrated Security=True
连接字符串的localDB。但是为此,我无法获取应用程序以编程方式创建的本地数据库的连接字符串,因为该应用程序将不在任何 IDE(已发布)下,并且它应该能够在不使用任何 IDE 的情况下获取连接字符串,因为用户是非技术人员。所以,希望你能理解
为什么你认为 LocalDB 是只存在于 Visual Studio 中的东西? docs.microsoft.com/en-us/sql/database-engine/configure-windows/…
@Caius Jard 是的,我指的是 LocalDB 的任何 IDE 或 SSMS。应用程序本身从数据库中获取连接字符串,该连接字符串由同一应用程序以编程方式创建,并被使用并保持连接以进行进一步的交易。
【参考方案1】:
您可以使用SqlConnectionStringBuilder Class 获取和编辑连接字符串。
这里的连接字符串是方法本地的,但在下面的方法范围内的任何地方。
public static void ChangeConnectionStringFromExisting()
var connectionString = "Server=localhost;Integrated security=SSPI;database=master";
var builder = new SqlConnectionStringBuilder(connectionString);
builder.DataSource = "(LocalDB)\\MSSQLLocalDB";
builder.InitialCatalog = "MyAppDatabase.mdf";
connectionString = builder.ConnectionString;
using (var cn = new SqlConnection(connectionString))
// . . .
【讨论】:
如果数据库在Primary
,你能指定如何获取DataSource
吗? @KarenPayne
即使数据库是以编程方式创建为 localdb,我也无法像 service-based database
那样访问它。它显示异常为=>无法打开登录请求的数据库“C:\MyAppDatabase.mdf”。登录失败。用户 'OpusCorpus\OpusCorpus 登录失败
试试这个连接字符串,将 databaseLocation
替换为 mdf 的完整路径 - 用户通过您的应用选择 -$@"Data Source=(localdb)\MSSQLLocalDB; AttachDbFilename=databaseLocation; Integrated Security=True; Connect Timeout=30"
以上是关于如何在运行时以编程方式从本地数据库获取连接字符串?时间:2019-06-01 标签:c#winforms的主要内容,如果未能解决你的问题,请参考以下文章