我的表单上有一个dataAdapter,dataSet和BindingSource连接到SQL数据库以显示表单中的数据,一切正常。但是,我需要有两个选项来连接到哪个服务器。 例如ISSP \ SQLEXPRESS和MY-WEB。 我不知道该怎么做,想知道是否有人能给我一些帮助,从哪里开始?谢谢 :) 但是当使用变量时,它表示它无法连接。
我正在使用下面的代码,但它说它无法连接,所以我想知道我是否正在引用变量错误?
sqlConnectionNW.ConnectionString = "Data Source=@server;Initial Catalog=Northwind;Integrated Security=True";
当我将代码更改为以下内容时,它可以完美运行。
sqlConnectionNW.ConnectionString = "Data Source=ISSP\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True";
答案 0 :(得分:1)
如果两者的数据相同,那么我认为最简单的方法是只更改连接字符串并在选择其他选项时切换它。
实施例: Data Source =“Server \ DBInstance”; Initial Catalog =“DatabaseName”; User ID =“user”; Password =“password”;
答案 1 :(得分:1)
DataAdapter上应该有一个带有SqlConnection的重载。您可以手动创建它并在连接时将其传递到数据适配器以选择不同的连接。
如果你查看你的dataset.designer.cs并找到构造函数,你会发现这是默认构造函数从你的appsettings做的。
答案 2 :(得分:1)
首先将两个连接设置添加到您的应用配置文件中:
<connectionStrings>
<add name="Test"
connectionString="Data Source=ISSP\SQLEXPRESS;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
providerName="System.Data.SqlClient" />
<add name="Production"
connectionString="Data Source=MY-WEB;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"
providerName="System.Data.SqlClient" />
</connectionStrings>
在您的应用程序中,将一个ComboBox添加到表单中(在此示例中称为uiConnection)并添加以下代码以填充它:
uiConnection.ValueMember = "Name";
foreach (ConnectionStringSettings con in ConfigurationManager.ConnectionStrings)
{
uiConnection.Items.Add(con);
}
您现在可以使用下拉列表指定要连接的数据库。获取数据时,请执行以下操作以获取正确的连接字符串:
ConnectionStringSettings connection = uiConnection.SelectedItem as ConnectionStringSettings
string queryString = "SELECT CustomerID, CompanyName FROM dbo.Customers";
SqlDataAdapter adapter = new SqlDataAdapter(queryString, connection);
DataSet customers = new DataSet();
adapter.Fill(customers, "Customers");