user1116851
user1116851

Reputation:

How to get data from stored sql procedure in dataset with SqlDataAdapter?

Is this good approach to get data from stored procedure? For example procedure is making select * from base. Here is my code but I need help with dataset and adapter:

public static DataSet Osvezi(string naziv_tablice)
{
    SqlCommand cmd = null;
    DataSet dataset = null;
    SqlConnection konekcija = new SqlConnection(ConfigurationManager.AppSettings["skripta"]);

    if (konekcija != null)
    {

        try
        {
            if (konekcija.State == ConnectionState.Closed)
                konekcija.Open();

            cmd = new SqlCommand();
            cmd.Connection = konekcija;

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "Osvezi";

            cmd.Parameters.Add(new SqlParameter("@tablica", SqlDbType.Int)).Value = naziv_tablice;
            cmd.ExecuteNonQuery();

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            // Fill the DataSet using default values for DataTable names, etc
            da.Fill(dataset);

            return dataset;
        }

        catch (Exception ee)
        {
            //Obravnava napak

        }

        finally
        {
            konekcija.Close();
            konekcija.Dispose();
            cmd.Dispose();

        }

        return dataset;

    }
    return dataset;

}

Upvotes: 4

Views: 70986

Answers (2)

Oleg Dok
Oleg Dok

Reputation: 21766

Try this one instead:

public static DataSet Osvezi(string naziv_tablice)
{

        try
        {
            using (SqlConnection konekcija = new SqlConnection(ConfigurationManager.AppSettings["skripta"]))
            {

                konekcija.Open();

                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection = konekcija;

                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = "Osvezi";

                    cmd.Parameters.AddWithValue("@tablica", naziv_tablice??DBNull.Value);

                    using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                    {
                        // Fill the DataSet using default values for DataTable names, etc
                        DataSet dataset = new DataSet();
                        da.Fill(dataset);

                        return dataset;
                    }
                }
            }
        }
        catch (Exception ee)
        {
            //Obravnava napak

        }
    return null;
}

Upvotes: 14

Rajkumar Vasan
Rajkumar Vasan

Reputation: 712

Please correct the following.

You don't need to open the connection.
There shouldn't be any command.ExecuteNonQuery.
The parameter in the method is string but the datatype of SqlParameter is SqlDbType.Int.

Upvotes: 2

Related Questions