1

私は次のコードを持っています:

public static void executeStoredProcedure(SqlCommand sp)
{
           SqlConnection conn = new SqlConnection();
           conn.ConnectionString=Connection.getConnection();
           conn.Open();
           sp.CommandType = CommandType.StoredProcedure;
           sp.Connection = conn;
           sp.ExecuteNonQuery();
           conn.Close();
}

このコードは、ストアド プロシージャを実行します。

しかし、私のストアドプロシージャは

Create procedure [dbo].[selectAllItems]
(@ItemCode varchar(50) )
as
begin
    select * from Item where ItemCode  = @ItemCode
end

行を返しますが、上記のC#コードでこの結果を取得する方法

4

3 に答える 3

2

SqlDataReaderストアド プロシージャによって返された結果セットを読み取るには、 a を使用する必要があります。

using (SqlConnection conn = new SqlConnection(Connection.getConnection()))
using (SqlCommand sp = new SqlCommand("dbo.selectAllItems", conn))
{
       sp.CommandType = CommandType.StoredProcedure;
       sp.Parameters.Add("@ItemCode", SqlDbType.Int).Value = your-item-code-value-here;

       conn.Open();

       using (SqlDataReader rdr = sp.ExecuteReader())
       {
          while (rdr.Read())
          {
             // read the values from the data reader, e.g.
             // adapt to match your actual query! You didn't mentioned *what columns*
             // are being returned, and what data type they are
             string colValue1 = rdr.GetString(0);
             int colValue2 = rdr.GetInt(1);
          }
       }

       conn.Close();
}

から読み取ったこれらの値を使用してSqlDataReader、たとえば、オブジェクト タイプを作成し、そのプロパティを設定することができます。または、そのようなことは、何をしたいかによって完全に異なります。

そしてもちろん、Entity Framework のような ORM を使用すると、この種のコードを大量に記述する必要がなくなります。EF がこれを自動的に処理します

于 2013-06-08T12:26:00.060 に答える
1

以下のようなストアドプロシージャへのパラメータを解析する必要があります

sp.Parameters.AddWithValue("@ItemCode", itemcode);

サンプルコード

public DataTable SelectAllItems(string itemCode)
{
    DataTable dt = new DataTable();
    using (SqlConnection conn = new SqlConnection(Connection.getConnection()))
    using (SqlCommand cmd = new SqlCommand("selectAllItems", conn))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@ItemCode", itemCode);
        conn.Open();

        using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
        {
            adapter.Fill(dt);
        }

    }
    return dt;
}
于 2013-06-08T12:27:42.017 に答える
0

SQL データ リーダーを使用できます。次の例を確認してください。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.read.aspx

于 2013-06-08T12:27:16.000 に答える