如何使用SqlDataAdapter从数据集中的存储sql过程中获取数据?

时间:2011-12-28 10:43:09

标签: c# sql dataset

这是从存储过程中获取数据的好方法吗?例如,程序正在制作select * from base。这是我的代码,但我需要有关数据集和适配器的帮助:

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;

}

2 个答案:

答案 0 :(得分:14)

试试这个:

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;
}

答案 1 :(得分:2)

请更正以下内容。

您无需打开连接 不应该有任何命令.ExecuteNonQuery。
方法中的参数是string,但SqlParameter的数据类型是SqlDbType.Int。