我仍在开发我的信使程序,它会更安全,但我只是在测试东西。我有一个登录表单,用于连接到 SQL 数据库,我现在用本地 SQL 设置它,因为我试图让它工作(它仍然不起作用),我只是想知道什么我做错了。
private void button1_Click(object sender, EventArgs e)
{
LoginInfo.un = textBox1.Text;
LoginInfo.pw = textBox2.Text;
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=localhost:3306; User Id=PXgamer;Password=Password1; Initial Catalog=login;";
try
{
con.Open();
}
catch (Exception)
{
MessageBox.Show("Error with the database connection");
}
string qry1 = "Select * from login where Password=@Password and Username=@Username";
SqlCommand com = new SqlCommand(qry1, con);
com.Parameters.AddWithValue("@Username", LoginInfo.un);
com.Parameters.AddWithValue("@Password", LoginInfo.pw);
SqlDataReader dr = com.ExecuteReader();
while (dr.Read())
{
if (dr.HasRows == true)
{
MessageBox.Show("Login Successful", "Login Information");
}
}
if (dr.HasRows == false)
{
MessageBox.Show("Access Denied", "Login Information");
}
this.Hide();
var frmMain = new frmMain();
frmMain.Closed += (s, args) => this.Close();
frmMain.Show();
}
这就是我的代码,首先连接挂起,然后出现“数据库连接错误”错误。我试着查了一下,但它说是连接没有打开的时候。所以很明显我猜是连接字符串有问题。
在调试中,这是突出显示的部分:
SqlDataReader dr = com.ExecuteReader();
这是显示的错误:
System.Data.dll 中出现“System.InvalidOperationException”类型的未处理异常
附加信息:ExecuteReader 需要一个打开且可用的连接。连接的当前状态为关闭。
System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的未处理异常
没有捕获的错误:
附加信息:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)