Click here to Skip to main content
15,914,905 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
How can I use try/catch with this to handle the error if there is no connection with server?

This is my database class:
C#
 public static string connectionString = ConfigurationManager.ConnectionStrings["AlimamTreeFinal"].ConnectionString ;

  public  static SqlCommand Intialize(string query, params SqlParameter[] prmArray)
        {
           
                
                SqlConnection cn = new SqlConnection(connectionString);

                SqlCommand cmd = new SqlCommand(query, cn);

                if (!query.Contains(" "))
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;

                if (prmArray.Length > 0)
                    cmd.Parameters.AddRange(prmArray);

                cn.Open();

                return cmd;
   
        }

        public  int ExcuteNonQuery(string query, params SqlParameter[] prmArray)
        {
            try
            {
                SqlCommand cmd = Intialize(query, prmArray);

                int affectedRows = cmd.ExecuteNonQuery();

                cmd.Connection.Close();

                return affectedRows;
            }
            catch (SqlException ex)
            {
                return ex.Number;
            }
        }

        public object ExcuteScalar(string query, params SqlParameter[] prmArray)
        {
            try
            {
                SqlCommand cmd = Intialize(query, prmArray);

                object value = cmd.ExecuteScalar();

                cmd.Connection.Close();

                return value;
            }
            catch (SqlException ex)
            {
                return ex.Number;
            }
        }

        public  SqlDataReader ExcuteReader(string query, params SqlParameter[] prmArray)
        {
            
                SqlCommand cmd = Intialize(query, prmArray);

                SqlDataReader sqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

                return sqlDataReader;

        }

        public  DataTable ExcuteDataTable(string query, params SqlParameter[] prmArray)
        {
          
                SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(query, connectionString);

                if (!query.Contains(" "))
                    sqlDataAdapter.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure;

                if (prmArray.Length > 0)
                    sqlDataAdapter.SelectCommand.Parameters.AddRange(prmArray);

                DataTable dt = new DataTable();
                sqlDataAdapter.Fill(dt);

                return dt;
         
        }

        public  DataSet ExcuteDataSet(string query, params SqlParameter[] prmArray)
        {
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(query, connectionString);

            if (!query.Contains(" "))
                sqlDataAdapter.SelectCommand.CommandType = System.Data.CommandType.StoredProcedure;

            if (prmArray.Length > 0)
                sqlDataAdapter.SelectCommand.Parameters.AddRange(prmArray);

            DataSet ds = new DataSet();
            sqlDataAdapter.Fill(ds);

            return ds;
        }


    }
}
Posted
Updated 1-Oct-14 0:21am
v2
Comments
[no name] 1-Oct-14 6:13am    
Not all exceptions are SqlExceptions and you can have multiple catches...

1.Your Intialize method should be made private/protected!

2.You should use try-catch-finally block in all your public methods ;

3.You must take care at some disposable resources, like SqlConnection and SqlReader, that must be disposed/closed in finally block, not only the the case of success but also in the case of exceptions. Here is an example of improvements:
C#
public  void ExcuteReader(string query, params SqlParameter[] prmArray, UseReaderDelegate UseReader)
        {
SQLConnection connection = null;
SQLDataReader sqlDataReader = null;
//
try{
                SqlCommand cmd = Intialize(query, prmArray);
                connection = cmd.Connection; //!!!                    
                sqlDataReader = cmd.ExecuteReader();
                UseReader(sqlDataReader);    
}
catch(SqlException)
{
 //Put here your code for managing the SQL exceptions 
 //...
}
finally
{
  //Dispose the possible used resources!
  if(sqlDataReader != null)
      sqlDataReader.Close();
  //
  if( connection != null)
     connection.Close();  
} 
}


PS: For more details about exception management you could read my next article (even the examples are from an ASP.NET MVC4 application the rules are the same):
MVC Basic Site: Step 2 - Exceptions Management[^]
 
Share this answer
 
v3
Use the code as :

C#
try
{
   // Code Here
}
catch(Exception ee)
{
  // Exception Handle block
}
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900