Я все еще работаю над своей программой обмена сообщениями, она будет более безопасной, но я просто тестирую ее. У меня есть форма входа, которая предназначена для подключения к базе данных 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.InvalidOperationException произошло в System.Data.dll
Дополнительная информация: ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения закрыто.
Необработанное исключение типа System.Data.SqlClient.SqlException произошло в System.Data.dll
Ошибка без подвоха:
Дополнительная информация: при установке соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server)
try catch
вокруг вашегоcon.Open()
, а затем отправьте обратно свое полное сообщение об ошибке, которое возникает при вызовеcon.Open()
. - person sstan   schedule 13.07.2015login
? Если это так, то часть строки подключения «Начальный каталог» - это имя базы данных, а не таблица, которую вы хотите запросить. - person entropic   schedule 13.07.2015sql-server
. Итак, мы все были введены в заблуждение. - person sstan   schedule 13.07.2015