2016-07-21 16 views
0

SQLテーブル 'Zupanije'から2つの変数を取得していますが、その使用方法はわかりません。私は以下のコードを試しましたが、キーと値の代わりにキーを2回取ります。SQL Serverデータベースからさらにデータを取得する

sqlCmd.CommandText = "SELECT COUNT(*) From Zupanije"; 
conn.Open(); 
int count = (int)sqlCmd.ExecuteScalar(); 
conn.Close(); 

sqlCmd.CommandText = "SELECT Naziv, Sifra From Zupanije"; 
conn.Open(); 
using (var zupanijeReader = sqlCmd.ExecuteReader()) 
{ 
    while (zupanijeReader.Read()) 
    { 
     for (int i=0; i <= count; i++) 
     { 
      izborZupanija.Add(zupanijeReader[i].ToString(), 
           Convert.ToDouble(zupanijeReader[i])); 
     } 
    } 
} 
conn.Close(); 
+2

「カウント」とは何ですか?あなたは 'count'より大きいか等しい限り、i ++を増やしています。それは不幸に終わるかもしれない – Petaflop

+0

通知、ありがとう、それを修正しました! –

+0

'COUNT'関数は、データベーステーブルの**行**の数を返します。しかし、何らかの理由でこの値を**列の数**として使用します。 –

答えて

0

私は@leetibbettに同意します。 Read()を呼び出すと、SqlDataReaderは各結果を反復処理します。次に、SqlDataReader.GetStringメソッドとSqlDataReader.GetDoubleメソッドを使用して、列のインデックスを引数として渡して、各列の値を取り出します。

sqlCmd.CommandText = "SELECT Naziv, Sifra From Zupanije"; 
conn.Open(); 
using (var zupanijeReader = sqlCmd.ExecuteReader()) 
{ 
    while (zupanijeReader.Read()) 
    { 
     izborZupanija.Add(zupanijeReader.GetString(0), zupanijeReader.GetDouble(1)); 
    } 
} 
conn.Close(); 
0

リーダーはインデクサーを通して列の配列を公開します。変数iを使用して同じ列を2回ピッキングしています。データ型がdb内で既に正しい場合は、リーダーのヘルパーメソッドを使用して値を取得する必要があります(reader.GetString(0)およびreader.GetDouble(1))。

関連する問題