Search code examples
c#asp.netdatareader

MySqlDataReader always Returning False even though data is there In Asp.net


Hii Guys !!! I made one C# class and one handler in Asp.net..In My C# file I made a function which is as Below:

public MySqlDataReader Consulta(String sql){

    String error="";

    try 
    {

        string connectionString = "Server=*****;Port=3306;Database=db;UID=*****;Pwd=****;pooling=false";
        MySqlConnection conn;
        conn = new MySqlConnection(connectionString);
        conn.Open();

        //string s = "select empid,empname,authcode from authcode";
        MySqlCommand cmd = new MySqlCommand(sql,conn);

        //cmd.CommandText = s;
        cmd.ExecuteNonQuery();

        rs =cmd.ExecuteReader();

        } 
        catch (Exception e) 
        {
            //error = e.getMessage();
        }

        return (rs);
}

In My handler File i am calling this function here is my code...

MySqldataReader rs = conexiondb.Consulta(strQuery);

total = conexiondb.countRec("price", "processeddata_table");

string json;
json = json + "{\n";
json = json + " \"page\":\""+intpage+"\",\n";
json = json + "\"total\":"+total_pages+",\n";
json = json + "\"records\":"+total+",\n";
json = json + "\"rows\": [";
rc =false;

while(rs.Read()){

    if(rc){
        json = json + ",";
    }
    json = json + "\n{";
    json = json + "\"price\":\"" + Convert.ToInt32(rs["price"]) + "\",";
    json = json + "\"cell\":[" + Convert.ToInt32(rs["price"]) + "";
    json = json + ",\"" + Convert.ToString(rs["username"]) + "\"";
    json = json + ",\"" + Convert.ToString(rs["ordinal"]) + "\"";
    json = json + ",\"" + Convert.ToString(rs["authcode"]) + "\"";
    json = json + ",\"" + Convert.ToString(rs["extension"]) + "\"";
    json = json + ",\"" + Convert.ToString(rs["trunk"]) + "\"";
    json = json + ",\"" + Convert.ToString(rs["dialnumber"]) + "\"";
    json = json + ",\"" + Convert.ToString(rs["dialdate"]) + "\"";
    json = json + ",\"" + Convert.ToString(rs["dialtime"]) + "\"";
    json = json + ",\"" + Convert.ToString(rs["duration"]) + "\"";
    json = json + ",\"" + Convert.ToString(rs["destination"]) + "\"";
    json = json + ",\"" + Convert.ToString(rs["price"]) + "\"";
    json = json + ",\"" + Convert.ToString(rs["toc"]) + "\"]";
    json = json + "}";

    rc=true;
}
json = json +"]\n";

json = json +"}";

HttpContext.Current.Response.Write(json);

But datareader is not reading the records it is always Returning false.Plz guys Help me to sort the problem .


Solution

  • You have at least two issues first one is that you are swallowing any exceptions. This probably causes your problem. If there was an exception it's very likely that you can't read from the reader which would result in your while loop never executing. There's a reason why having an empty catch is a warning

    Secondly your are trying to execute both an NonQuery (an command that does not query data) and a query with the same reader. Whether this would cause an exception I don't know but at least there's no reason to do both. You could remove both issues

    public MySqlDataReader Consulta(String sql){
                string connectionString = "Server=***;Port=3306;Database=****;UID=***;Pwd=****;pooling=false";
       var conn = new MySqlConnection(connectionString);
       conn.Open();
    
       var cmd = new MySqlCommand(sql,conn);
       var rs =cmd.ExecuteReader();
       return (rs);
    }