2016-08-28 15 views
0

一時的なデータをデータベースに送る前に一時的なデータを保存するために一時的なdatatableを作成しました。しかし、それを作成した後、今私はこの一時的なdatatableからすべての行をフェッチし、それらをデータベースに保存したいと思います。 foreachループasp.netのDataTableからすべての行を取得します

foreach(DataRow r in dt.Rows) 
     { 
      string Fname = dt.Rows[0]["Name"].ToString(); 
      string cType = dt.Rows[0]["ContentType"].ToString(); 
      byte[] ePic = (byte[])dt.Rows[0]["pic"]; 
      BAL.saveEventPictures(Convert.ToInt32(lblEventID.Text), Fname, cType, ePic); 
     } 

を使用して、このiループ私のdatatableについての問題はそれだけで全体のループ回数のために何度も何度も最初の行のデータをフェッチすることです。他の情報を持つ4 datarowsがある場合と同様に、データベースの1行目のデータを4回保存します。私の間違いは何ですか?

for (int i = 0; i < dt.Rows.Count; i++) 
{ 
    string Fname = dt.Rows[i]["Name"].ToString(); 
    string cType = dt.Rows[i]["ContentType"].ToString(); 
    byte[] ePic = (byte[])dt.Rows[i]["pic"]; 
    BAL.saveEventPictures(Convert.ToInt32(lblEventID.Text), Fname, cType, ePic); 
} 
+0

これは、具体的には最初の行のみを索引付けしているためです。 – IrishChieftain

+0

@IrishChieftainその後、私は何をやろうとしているのですか? –

+0

@IrishChieftain私はそれを得ました。ありがとう:) 'dt.Rows [0]'の代わりに –

答えて

0

dt.Rows[0]は常にあなたのDataTable。あなたのではなくforeachforループを使用して、テーブルの各インデックスにアクセスするためにiを使用する必要がある最初の行にアクセスしていることforループを使用して、datatableの列に関するすべての値をフェッチして、この方法で使用できるように変数に値を代入します。なぜなら、データテーブルの行のハードコードされたインデックスを使用すると、毎回単一のデータしか取得されないからです。

ここでiは、行の値を取得するための行と列の名前のインデックスです。したがって、すべてのレコードを取得するためには、動的にインデックスを作成する必要があります。

for (int i = 0; i < dt.Rows.Count; i++) 
{ 
    string Fname = dt.Rows[i]["Name"].ToString(); 
    string cType = dt.Rows[i]["ContentType"].ToString(); 
    byte[] ePic = (byte[])dt.Rows[i]["pic"]; 
    BAL.saveEventPictures(Convert.ToInt32(lblEventID.Text), Fname, cType, ePic); 
} 
関連する問題