-2

下面的代码用于在运行时更改 App.config 中的连接字符串,我在这里找到了它,但这段代码在 Visual Studio 2010 和 SQL Server 2008 上对我不起作用,我无法打开与 Northwind 数据库的连接。

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:无法从 'string' 转换为 'System.Data.SqlClient.SqlCommand'

这个问题有什么解决办法吗?谢谢你。

4

2 回答 2

1

该错误告诉您您将不正确的参数传递给您的SqlDataAdapter。我认为正确的调用是:

SqlDataAdapter da = new SqlDataAdapter("select * from employee", Db); 

编辑

看起来您正在从程序中创建连接字符串,将其保存到配置文件中,然后在创建 SqlDataAdapter 之前从我们的配置文件中读取它。因此,当您调试此行时:

Db.ConnectionString = ConfigurationManager.ConnectionStrings["con"].ToString();  

仔细检查Db.ConnectionString实际包含连接字符串。

另一件事是打开您的 SQL Server Management Studio 并确认您可以从那里连接到 Northwind 数据库。包括/或者,在 Visual Studio 中,打开您的“服务器资源管理器”窗口并确认您可以通过单击添加连接然后将连接属性窗口设置为您的服务器并下拉组合框以查看它是否填充来创建到 Northwind 的数据连接你的数据库:

在此处输入图像描述

于 2012-04-18T23:20:33.130 回答
0

看看的可用构造函数SqlDataAdapter

没有只接受 SQL 字符串的构造函数重载。
您需要使用其他重载之一。
例如,有一个需要一个 SQL 字符串和一个 SqlConnection 对象。要使用它,请像这样更改您的代码:

SqlDataAdapter da = new SqlDataAdapter("select * from employee", Db);

编辑:

正如 BradRem 在他的评论中已经提到的那样,尝试不同的连接字符串。
如果他的示例不适合您,您可以在http://connectionstrings.com/sql-server-2008找到更多可能的示例。

Northwind你的服务器上真的有一个数据库吗?
您当前机器上的 Windows 用户是否有权访问服务器上的数据库?(这就是Integrated Security=SSPI意思 - 您当前的 Windows 用户用于访问数据库!)

于 2012-04-18T23:20:43.520 回答