2013-04-10 3 views
0

Почему я не могу дважды вызвать OpenConnection() одним способом? Когда я вызываю это, появляется такая ошибка:Почему нельзя OpenConnection() вызываться дважды в одном методе?

Соединение уже открыто.

Я называю это дважды в SelectDisPatient() и Count(). Смотрите мой код на for (int index = 0; index < Count(); index++)

Этот метод SelectDisPatient:

public void SelectDisPatient(FrmVIRGO frm) 
{ 
    string query = "SELECT id_pasien FROM tb_patient_information "; 
    if (this.OpenConnection() == true) 
    { //Create Command 
     MySqlCommand cmd = new MySqlCommand(query, connection); 
     //Create a data reader and Execute the command 
     MySqlDataReader dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
     if (dataReader.HasRows) 
     { 
     for (int index = 0; index < Count(); index++) 
     dataReader.Read(); 
     frm.tbName.Text = dataReader[0].ToString(); 
     } 
     //close Data Reader 
     dataReader.Close(); 

     //close Connection 
     this.CloseConnection(); 

    } 
} 

Count() Этот метод:

public int Count() 
{ 
    string query = "SELECT Count(*) FROM tb_patient_information"; 
    int Count = -1; 

    //Open Connection 
    if (this.OpenConnection() == true) 
    { 
     //Create Mysql Command 
     MySqlCommand cmd = new MySqlCommand(query, connection); 

     //ExecuteScalar will return one value 
     Count = int.Parse(cmd.ExecuteScalar()+""); 

     //close Connection 
     this.CloseConnection(); 

     return Count; 
    } 
    else 
    { 
     return Count; 
    } 
} 

Но когда я удалить (this.OpenConnection() == true) в методе Count() он говорит, мне нужно, чтобы закрыть соединение.

+4

почему вы хотите, чтобы открыть соединение дважды? –

+0

Поместите 'dataReader.Close();' в свой цикл 'for' –

+0

^или подключайте и повторно используйте соединения. –

ответ

2

Try:

public void SelectDisPatient(FrmVIRGO frm) 
{ 
    int count = Count(); 
    string query = "SELECT id_pasien FROM tb_patient_information "; 
    if (this.OpenConnection() == true) 
    { //Create Command 
     MySqlCommand cmd = new MySqlCommand(query, connection); 
     //Create a data reader and Execute the command 
     MySqlDataReader dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
     if (dataReader.HasRows) 
     { 
     for (int index = 0; index < count ; index++) 
     dataReader.Read(); 
     frm.tbName.Text = dataReader[0].ToString(); 
     } 
     //close Data Reader 
     dataReader.Close(); 

     //close Connection 
     this.CloseConnection(); 

    } 
} 
+0

Thanx @Damith его работы –

Смежные вопросы