How can I retrieve a table from stored procedure to a datatable? How can I retrieve a table from stored procedure to a datatable? sql-server sql-server

How can I retrieve a table from stored procedure to a datatable?


string connString = "<your connection string>";string sql = "name of your sp";using(SqlConnection conn = new SqlConnection(connString)) {    try     {        using(SqlDataAdapter da = new SqlDataAdapter())         {            da.SelectCommand = new SqlCommand(sql, conn);            da.SelectCommand.CommandType = CommandType.StoredProcedure;            DataSet ds = new DataSet();               da.Fill(ds, "result_name");            DataTable dt = ds.Tables["result_name"];            foreach (DataRow row in dt.Rows) {                //manipulate your data            }        }        }     catch(SQLException ex)     {        Console.WriteLine("SQL Error: " + ex.Message);    }    catch(Exception e)     {        Console.WriteLine("Error: " + e.Message);    }}

Modified from Java Schools Example


Set the CommandText as well, and call Fill on the SqlAdapter to retrieve the results in a DataSet:

var con = new SqlConnection();con.ConnectionString = "connection string";var com = new SqlCommand();com.Connection = con;com.CommandType = CommandType.StoredProcedure;com.CommandText = "sp_returnTable";var adapt = new SqlDataAdapter();adapt.SelectCommand = com;var dataset = new DataSet();adapt.Fill(dataset);

(Example is using parameterless constructors for clarity; can be shortened by using other constructors.)


Explaining if any one want to send some parameters while calling stored procedure as below,

using (SqlConnection con = new SqlConnection(connetionString))            {                using (var command = new SqlCommand(storedProcName, con))                {                    foreach (var item in sqlParams)                    {                        item.Direction = ParameterDirection.Input;                        item.DbType = DbType.String;                        command.Parameters.Add(item);                    }                    command.CommandType = CommandType.StoredProcedure;                    using (var adapter = new SqlDataAdapter(command))                    {                        adapter.Fill(dt);                    }                }            }