Member 11329824 Ответов: 2

Соединение должно быть действительным и открытым


private void ObtenerUsuarios() {
    string connString = File.ReadAllText(Application.StartupPath + "\\connectionString.dat");
    MySqlConnection conn = new MySqlConnection(connString);
    MySqlCommand command = conn.CreateCommand();

    try {
        conn.Open();
    } catch (Exception ex) {
        //MessageBox.Show(ex.Message);
    }


    MySqlDataReader reader;
    command.CommandText = "SELECT * FROM Usuarios";
    reader = command.ExecuteReader();

    while (reader.Read()) {
        Usuario nuevoUsuario = new Usuario();
        nuevoUsuario.idUsuario = (int)reader["idUsuario"];
        nuevoUsuario.Nombre = reader["Nombre"].ToString();
        nuevoUsuario.Fecha = (DateTime)reader["Fecha"];
        nuevoUsuario.Foto = reader["Foto"].ToString();
        ListaUsuarios.Add(nuevoUsuario);
    }
}


Что я уже пробовал:

Я пытаюсь подключиться к своему sql с сервера.

2 Ответов

Рейтинг:
2

OriginalGriff

Не "глотайте" исключения:

try {
        conn.Open();
    } catch (Exception ex) {
        //MessageBox.Show(ex.Message);
    }
Если соединение не открывается - а это почти наверняка происходит из сообщения об ошибке, которое вы показываете, - вы понятия не имеете, почему или даже что это произошло! И продолжая с остальной частью метода, как только он не смог открыться? Почему? Неужели вы думали, что он все еще будет работать, даже не будучи открытым?
Раскомментируйте сообщение, добавить return чтобы перехватить код (или лучше, заключите остальную часть метода в try блок), и используйте отладчик для проверки того, что находится в строке подключения, когда она не открывается.

И кстати: Вы не закрываете соединение и не вызываете Dispose для него - поэтому, если ему удастся открыть файл БД, он заблокирует его до тех пор, пока ваше приложение не завершится. Использовать using блокируйте конструкторы компонентов БД, чтобы убедиться, что они автоматически закрываются и удаляются, когда вы закончите с ними.


Рейтинг:
0

Manish K. Agarwal

Извините, вопрос не совсем ясен. Это был твой Конн.Открыть() успешно ?

Вы можете попробовать следующим образом

MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand myCommand = new MySqlCommand("SELECT * FROM Usuarios");
myCommand.Connection = myConnection;
myConnection.Open();
reader = myCommand.ExecuteReader();
 . . .
 . . .
 . . .
myCommand.Connection.Close();