动态连接字符串数据库C#


9

我总是使用这行代码进行连接:

 string ConnectString = "datasource = mysource; username = myusername; password = mypassword; database = mydatabasename";

我这次想做的是,而不是每次在脚本中直接写入服务器数据时,我都想填充一些文本框。所以我尝试做这样的事情

string ConnectString = "datasource = txtmysource.Text; username = txtmyusername.Text; password = txtmypassword.Text; database = txtmydatabasename.Text";

其中txtmysource.Text / txtmyusername.Text / txtmypassword.Text / txtmydatabasename.Text是UI中文本框的名称。但是我找不到写方法来做到这一点。

Answers:


28

您可能想要DbConnectionStringBuilder,理想情况下是您的RDBMS的正确选择-因此使用SQL Server:

var builder = new SqlConnectionStringBuilder
{
    UserID = txtmyusername.Text,
    DataSource = txtmysource.Text,
    Password = txtmypassword.Text,
    InitialCatalog = txtmydatabasename.Text,
};
var connectString = builder.ConnectionString;

这里的关键点是,如果(例如)任何元素包含保留/非平凡字符(例如空格,逗号,引号等),它将应用正确的字符转义,等等。


2

也许用这样的插值字符串:

string ConnectString = $"datasource = {txtmysource.Text}; username = {txtmyusername.Text}; password = {txtmypassword.Text}; database = {txtmydatabasename.Text}";

2
这很好,直到有人创建了一个数据库a;b="c-允许(允许)
Marc Gravell

感谢您现在解决您的问题
Raouf Bessghaier 19/12/12

2
@RaoufBessghaier,在这种情况下,您应将其标记为答案(绿色对勾)
Marc Gravell
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.