2011-06-23 8 views
-1

私はあなたが私は私のコードは次のように行くのDropDownListの出力データは、私のパラメータを設定することを関数を作成しようとしています私の問題で私を助けてください事前にSqlCommandオブジェクトのasp.net C#が

+2

SqlDataReaderよりもSqlConnectionの周囲にブロックを使用することが重要です –

+1

そして、あなたの問題は正確に何ですか? – JohnFx

+0

何が問題ですか? – Eranga

答えて

4

このような全体の機能再書き込み:

public static IEnumerable<ListItem> GetTracks(string conferenceId) 
{ 
    using (var sqlCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) 
    using (var cmd = new SqlCommand("select Track_name,Track_ID from TrackCommittee where Conference_id= @conferenceId", sqlCon)) 
    { 

     cmd.Parameters.Add("@conferenceId", SqlDbType.Int).Value = conferenceId; 
     sqlCon.Open(); 

     using (SqlDataReader sdr = cmd.ExecuteReader()) 
     { 
      while (sdr.Read()) 
      { 
       yield return new ListItem(sdr[0].ToString(), sdr[1].ToString()); 
      } 
     } 
    } 
} 

をそして、このようなあなたの呼び出し元のコード更新:

if (string.IsNullOrEmpty(os.SelectedValue)) 
{ 
    os.Items.AddRange(GetTracks("all").ToArray()); 
} 

私は、KeyValuePairを返すようにGetTracksを変更し、KeyValuePairからListItemに選択投影を追加するように変更しました。

+0

そのコードで私はロードページから呼び出せません。(string.IsNullOrEmpty(os.SelectedValue)) { リスト ID; var names = GetTracks(out IDs、 "all"); (int i = 0; i emilios

+0

@emilios - 2つの列があることに気付きませんでした。それを反映し、コードの使い方を示すために私の答えを更新しました。 –

0

私はあなたのデータセットの目的はここでは分かりません。これは私が過去に使った構文の一種です。コメントで述べたように、あなたはそれを自分で廃棄/閉会保存するためにSqlConnectionオブジェクトの周りに使用して置く:EDIT

using (SqlDataReader sdr = cmd.ExecuteReader()) 
{ 
    while (sdr.Read()) 
    { 
    res.Add(sdr.GetString(sdr.GetOrdinal("Track_name"))); 
    trackIds.Add(sdr.GetInt32(sdr.GetOrdinal("Track_ID")).ToString()) 
    } 
} 

- (私はここに私のコードを持っていない私は、構文が正しいことだと思います)。

2

あなたが実際に結果がsdrを設定触れることはありません:

using (var sqlCon = new SqlConnection(...)) 
{ 
    sqlCon.Open(); 
    using (SqlCommand cmd = new SqlCommand("...", sqlCon) 
    { 
     cmd.Parameters.Add(new SqlParameter("@conferenceId", conferenceId)); 
     using (SqlDataReader sdr = cmd.ExecuteReader()) 
     { 
      while (sdr.Read()) 
      { 
       res.Add(sdr[0]); 
       trackIds.Add (srd[1]); 
      } 
     } 
    } 
    } 
    return res; 
0

SqlDataReaderで何もしているようには見えません。このコマンドを実行して、結果を何もしないようにしている

using (SqlDataReader sdr = cmd.ExecuteReader()) 
{ 
    while(sdr.Read()) 
    { 
     //whatever 
    } 
... 

は今、それが見えます:通常は、このようなものを持っているでしょう。私は、DataTableがどのように機能するかについてはわかりません。

関連する問題