下面的代碼用於在運行時更改App.config中的連接字符串,我發現它爲here,但此代碼在Visual Studio 2010和SQL Server 2008上不適用於我,我可以不打開連接到Northwind數據庫。在運行時更改App.config中的連接字符串
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace MyNameSpace
{
public partial class FrmConnectionTest : Form
{
public FrmConnectionTest()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
//Constructing connection string from the inputs
StringBuilder Con = new StringBuilder("Data Source=");
Con.Append(TxtServer.Text);
Con.Append(";Initial Catalog=");
Con.Append(TxtDatabase.Text);
Con.Append(";Integrated Security=SSPI;");
string strCon = Con.ToString();
updateConfigFile(strCon);
//Create new sql connection
SqlConnection Db = new SqlConnection();
//to refresh connection string each time else it will use previous connection string
ConfigurationManager.RefreshSection("connectionStrings");
Db.ConnectionString = ConfigurationManager.ConnectionStrings["con"].ToString();
//To check new connection string is working or not
SqlDataAdapter da = new SqlDataAdapter("select * from employee");
DataTable dt = new DataTable();
da.Fill(dt);
CmbTestValue.DataSource = dt;
CmbTestValue.DisplayMember = "EmployeeID";
}
catch (Exception E)
{
MessageBox.Show(ConfigurationManager.ConnectionStrings["con"].ToString() + ".This is invalid connection", "Incorrect server/Database");
}
}
public void updateConfigFile(string con)
{
//updating config file
XmlDocument XmlDoc = new XmlDocument();
//Loading the Config file
XmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
foreach (XmlElement xElement in XmlDoc.DocumentElement)
{
if (xElement.Name == "connectionStrings")
{
//setting the coonection string
xElement.FirstChild.Attributes[2].Value = con;
}
}
//writing the connection string in config file
XmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
}
}
}
使用Visual Studio 2010和SQL Server2008中,我得到了下一行2個錯誤:
SqlDataAdapter da = new SqlDataAdapter("select * from employee");
錯誤1「System.Data.SqlClient.SqlDataAdapter的最佳重載的方法匹配.SqlDataAdapter(System.Data.SqlClient.SqlCommand)'有一些無效參數
錯誤2參數1:無法從'字符串'轉換爲'System.Data.SqlClient.SqlCommand'
有沒有解決這個問題的方法?謝謝。
SqlDataAdapter da = new SqlDataAdapter(「select * from employee」,Db)是正確的,但是當使用「。\ SQLEXPRESS」作爲服務器名和「Northwind」作爲數據庫名,我陷入catch(異常E)與消息:MessageBox.Show(ConfigurationManager.ConnectionStrings [「con」]。ToString()+「.This is invalid connection」 – 2012-04-18 23:53:59
@AlphaBird,你提到你嘗試將連接設置更改爲:「Data Source = localhost; Initial Catalog = Northwind; Integrated Security = SSPI;」 – 2012-04-19 00:25:11
連接也失敗,並且Data Source = localhost,我在「Data Source = 「並且也失敗了,我驗證了我的App.config的內容:<?xml version =」1.0「encoding =」utf-8「?> connectionStrings> configuration> –
2012-04-19 09:41:41