C# SQL连接WPF

C# SQL连接WPF,c#,sql,sql-server,C#,Sql,Sql Server,因此,我在sql连接中使用以下代码连接到本地服务器: public void ConnectToSql(string ServerName, string UserName, string Password) { string strConnection = "server=" + tbServer + ";uid=" + tbUser + "; pwd=" + tbPwd; SqlCon = new System.Data.Sql

因此,我在sql连接中使用以下代码连接到本地服务器:

public void ConnectToSql(string ServerName, string UserName, string Password)
        {
            string strConnection = "server=" + tbServer + ";uid=" + tbUser + "; pwd=" + tbPwd;
            SqlCon = new System.Data.SqlClient.SqlConnection();
            SqlCom = new System.Data.SqlClient.SqlCommand();
            SqlCon.ConnectionString = strConnection;
            SqlCom.CommandType = System.Data.CommandType.Text;
            SqlCom.Connection = SqlCon;

            {
                try
                {
                    SqlCon.Open();

                }
                catch (Exception ex)
                {
                    MessageBox.Show("Failed to connect to data source");
                }


            }
我这样称呼它:

 private void Button_Click(object sender, RoutedEventArgs e)
        {
            ConnectToSql(tbServer.Text, tbUser.Text, tbPwd.Text);
        }
在windows窗体中工作完美,但当我在WPF gues中尝试时,无法连接到本地服务器。
有什么建议吗?

快速解决方案:

替换此项:

string strConnection = "server=" + tbServer + ";uid=" + tbUser + "; pwd=" + tbPwd;
为此:

string strConnection = "server=" + tbServer.Text + ";uid=" + tbUser + "; pwd=" + tbPwd.Text;
正确的解决方案:

。在用WPF编写一行代码之前,先学习MVVM。不要像那样操纵过程代码中的UI元素。创建一个合适的ViewModel,让您的ViewModel访问DAL并公开数据和逻辑

此外,与古老的ADO.Net相比,您最好使用ORM,并将所有SQL指令作为
字符串


看在上帝的份上,请将其从代码中删除,并创建一个适当的数据访问层。

快速解决方案:

替换此项:

string strConnection = "server=" + tbServer + ";uid=" + tbUser + "; pwd=" + tbPwd;
为此:

string strConnection = "server=" + tbServer.Text + ";uid=" + tbUser + "; pwd=" + tbPwd.Text;
正确的解决方案:

。在用WPF编写一行代码之前,先学习MVVM。不要像那样操纵过程代码中的UI元素。创建一个合适的ViewModel,让您的ViewModel访问DAL并公开数据和逻辑

此外,与古老的ADO.Net相比,您最好使用ORM,并将所有SQL指令作为
字符串


看在上帝的份上,请将其从代码中删除,并创建一个适当的数据访问层。

根据有根据的猜测,您的问题可能在这一行:

public void ConnectToSql(string ServerName, string UserName, string Password)
{
    string strConnection = "server=" + tbServer + ";uid=" + tbUser + "; pwd=" + tbPwd;
    //...
您使用的是UI项,而不是使用传递的参数构建连接字符串,这可能无法构建非常好的连接字符串。试试这个:

string strConnection = "server=" + ServerName + ";uid=" + UserName + "; pwd=" + Password;

此外,我同意HighCore所说的一切,这只是一个快速解决方案。

有根据地猜测,您的问题可能在以下方面:

public void ConnectToSql(string ServerName, string UserName, string Password)
{
    string strConnection = "server=" + tbServer + ";uid=" + tbUser + "; pwd=" + tbPwd;
    //...
您使用的是UI项,而不是使用传递的参数构建连接字符串,这可能无法构建非常好的连接字符串。试试这个:

string strConnection = "server=" + ServerName + ";uid=" + UserName + "; pwd=" + Password;

此外,我同意HighCore所说的一切,这只是一个快速修复。

我建议使用SqlConnectionStringBuilder,试试这样的方法 正如其他人之前所说,WPF或WinForms与您的问题无关

using (var cmd = new SqlCommand())
{
        cmd.CommandText = "Your Query"
        cmd.Connection = GetOpenDataConnection(".", "sampleDb", "sa", "12345");

        //Execute NonQuery or ExecuteReader
        cmd.Connection.Close();
}

private SqlConnection GetOpenDataConnection(string server, string database, string user, string password)
{
    var builder = new SqlConnectionStringBuilder();
    builder.DataSource = server;
    builder.InitialCatalog = database;
    builder.UserID = user;
    builder.Password = password;

    var connection = new SqlConnection(builder.ToString());
    connection.Open();
    return connection;
}

我建议使用SqlConnectionStringBuilder,试试下面的方法 正如其他人之前所说,WPF或WinForms与您的问题无关

using (var cmd = new SqlCommand())
{
        cmd.CommandText = "Your Query"
        cmd.Connection = GetOpenDataConnection(".", "sampleDb", "sa", "12345");

        //Execute NonQuery or ExecuteReader
        cmd.Connection.Close();
}

private SqlConnection GetOpenDataConnection(string server, string database, string user, string password)
{
    var builder = new SqlConnectionStringBuilder();
    builder.DataSource = server;
    builder.InitialCatalog = database;
    builder.UserID = user;
    builder.Password = password;

    var connection = new SqlConnection(builder.ToString());
    connection.Open();
    return connection;
}

WPF是一个UI框架。它与SQL或其他什么无关。顺便说一句,从后面的代码中删除那些可怕的代码,可能还需要使用ORM。我很惊讶,商业上的努力会允许在用户界面上使用db名称空间。WPF是一个UI框架。它与SQL或其他什么无关。顺便说一句,从后面的代码中删除那些可怕的代码,可能还需要使用ORM。我很惊讶商业上的努力会允许用户表面上使用db名称空间。@DaniDărăban@DaniDărăban