C# SQL Server SELECT STATEMENT Class

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • smckibbe01
    New Member
    • Nov 2006
    • 29

    C# SQL Server SELECT STATEMENT Class

    I've written class in C# that performs a select statement in SQL Server and retrieves the reader rows into a DataTable. I then use the DataTable to populate a datagrid, listbox, etc...

    I think this class is inefficient. Does anyone have any ideas to make it faster or cleaner if that is possible.

    Code:
    class db_Select
        {
            public db_Select(string SQL)
            {
                SqlCommand myCommand = new SqlCommand(SQL, MainMenu.myConnection);
                MainMenu.myConnection.Open();
                SqlDataReader myReader = myCommand.ExecuteReader();
    
                DataTable SchemaTable = myReader.GetSchemaTable();
    
                MainMenu.myDataTable.Clear();
    
                while (MainMenu.myDataTable.Columns.Count > 0)
                {
                    MainMenu.myDataTable.Columns.RemoveAt(0);
                }
    
                foreach (DataRow myField in SchemaTable.Rows)
                {
                    foreach (DataColumn myProperty in SchemaTable.Columns)
                    {
                        if (myProperty.ColumnName == "ColumnName")
                        {
                            MainMenu.myDataTable.Columns.Add(myField[myProperty].ToString());
                        }
                    }
                }
    
                while (myReader.Read())
                {
                    object[] myObject = new object[MainMenu.myDataTable.Columns.Count];
                    for (int i = 0; i < MainMenu.myDataTable.Columns.Count - 1; i++)
                    {
                        myObject[i] = myReader[i];
                    }
                    MainMenu.myDataTable.Rows.Add(myObject);
                }
    
                MainMenu.myConnection.Close();
            }
        }
  • Plater
    Recognized Expert Expert
    • Apr 2007
    • 7872

    #2
    I think I may be able to help you. With the miracle that is SqlDataAdapter.

    Consider the following:
    Code:
    class db_Select
    {
            public db_Select(string SQL)
            {
                SqlCommand myCommand = new SqlCommand(SQL, MainMenu.myConnection);
                MainMenu.myConnection.Open();
                SqlDataAdapter mya = new SqlDataAdapter(myCommand );
                DataTable mydt = new DataTable();
                mya.Fill(mydt );
                MainMenu.myConnection.Close();
    // You appear to use MainMenu.myDataTable as your object so:
                MainMenu.myDataTable = mydt;
           }
    }

    Comment

    • smckibbe01
      New Member
      • Nov 2006
      • 29

      #3
      That works great! Thanks!
      Last edited by smckibbe01; Nov 29 '07, 01:58 PM. Reason: Decided not to ask question

      Comment

      Working...