Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

problem with getting data from database

I am trying to get the data from database by using the below code.....

if there is no data in the table it will always goes to this statement

I am using mysql.net connector for getting the data and i am doing winforms applications using c#

     public DataTable sales(DateTime startdate, DateTime enddate)
     {
         const string sql = @"SELECT memberAccTran_Source as Category, sum(memberAccTran_Value) as Value
                              FROM memberacctrans
                              WHERE memberAccTran_DateTime BETWEEN @startdate AND @enddate
                              GROUP BY memberAccTran_Source";

         return sqlexecution(startdate, enddate, sql);
     }

and the below code is for return sqlexceution...function..

 private static DataTable sqlexecution(DateTime startdate, DateTime enddate, string sql)
 {
         var table = new DataTable();
         using (var conn = new MySql.Data.MySqlClient.MySqlConnection(connectionstring))
         {
             conn.Open();

             var cmd = new MySql.Data.MySqlClient.MySqlCommand(sql, conn);

             var ds = new DataSet();

             var parameter = new MySql.Data.MySqlClient.MySqlParameter("@startdate", MySql.Data.MySqlClient.MySqlDbType.DateTime);
             parameter.Direction = ParameterDirection.Input;
             parameter.Value = startdate.ToString(dateformat);
             cmd.Parameters.Add(parameter);

             var parameter2 = new MySql.Data.MySqlClient.MySqlParameter("@enddate", MySql.Data.MySqlClient.MySqlDbType.DateTime);
             parameter2.Direction = ParameterDirection.Input;
             parameter2.Value = enddate.ToString(dateformat);
             cmd.Parameters.Add(parameter2);

             var da = new MySql.Data.MySqlClient.MySqlDataAdapter(cmd);

             da.Fill(ds);
             try
             {
                 table = ds.Tables[0];

             }
             catch
             {
                 table = null;
             }
         }
         return table;
     }

even if there is no data the process flow will goes to this line

table = ds.Tables[0];

how can i reduce this .....

would any one pls help on this....

like image 345
Glory Raj Avatar asked Sep 13 '11 11:09

Glory Raj


People also ask

Why database is not working?

There are a number of reasons why your database host or server might be experiencing issues: Too many simultaneous connections to the database. Some providers have limits on how many connections a server can have at one time. Problems with another site on your shared hosting server.

What are common causes of poor performance in databases?

Database performance issues are a common cause of web application bottlenecks. Most of these problems boil down to a lack of indexing, inefficient queries, and the misuse of data types, which can all be easily fixed.


2 Answers

In your case if you are think that catch block will get excuted if there is no row available than you are wrong because Even if there is no data once select query is get exucuted without exception it Creates datatable with the columns but with no rows.

for this i think you can make use of ds.table[0].rows.count property which return 0 if there is no row in datatable.

if ( ds.Tables[0].Rows.Count > 0 )
     table = ds.Tables[0];
else
     table=null;
like image 162
Pranay Rana Avatar answered Oct 14 '22 11:10

Pranay Rana


It returns an empty table. This is common behavior. If you want to have table null you should check for the row count :

If ( ds.Tables[0].Rows.Count >. 0 )
     table = ds.Tables[0];
Else
     table=0
like image 30
Sascha Avatar answered Oct 14 '22 09:10

Sascha