C# SQL连接WPF
因此,我在sql连接中使用以下代码连接到本地服务器: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
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