2016-03-23 10 views
-1
OleDbConnection conn1 = new OleDbConnection(); 
conn1.ConnectionString = (@"ConnectionString"); 
conn1.Open(); 

DataTable dataTable = new DataTable();  

OleDbCommand cmd = new OleDbCommand(sqlstring, conn1); 

foreach(DataRow row in dataTable.Rows) 
{ 
    MessageBox.Show(row["SerialNumber"].ToString()); 
} 

私のデータベースからシリアル番号を取得しようとしています。私はこれについてどうやって行くのか分かりません。私はDataTableのどこかで私のデータテーブルを参照すると思いますか?私はすでに自分のデータベースとの接続を確立しました。私はデータテーブル "保証"の列 "SerialNumber"のすべての値が必要です。Foreach loop through Datatable Column

私はforeachがこのシナリオで正しい選択だと思いますか?

+0

このコードは機能しますか?もしそうなら、私はあなたが正しい解決策を持っていると言いたいと思います。 – CodingGorilla

+0

本当に、私はあなたがあなたのクエリの結果でDataTableをロードする部分を逃したと思います...あなたはcmdを実行し、結果をDataTableにロードする必要があります... – Veljko89

+0

DataAdapterまたはDataReaderが必要ですデータベースからデータを取得します。 [this](https://msdn.microsoft.com/en-us/library/haa3afyz(v = vs.110).aspx)などを参照してください。 – Pikoh

答えて

2

接続を開きましたが、その接続に関連付けられているsqlコマンドがありますが、まだコマンドを実行していません。コマンドを実行すると、結果をDataTableに読み込むための何かが必要になります。

DataTable dataTable = new DataTable(); 
using (var conn1 = new OleDbConnection(@"ConnectionString")) 
using (var cmd = new OleDbCommand(sqlstring, conn1)) 
{ 
    conn1.Open(); 
    dataTable.Load(cmd.ExecuteReader()); 
} 
foreach(DataRow row in dataTable.Rows) 
{ 
    MessageBox.Show(row["SerialNumber"].ToString()); 
} 
+0

'' System.Data.OleDb.OleDbExceptionの未処理例外を言って、 'dataTable.Load(cmd.ExecuteReader()); 'System.Data.dllで発生しました 追加情報:1つまたは複数の必須パラメーターに値が指定されていません。' – Havoux

+0

sqlstringの外観を表示する必要があります。プロシージャーはどこにありますか? – Veljko89

+0

いくつかの構文を修正しました。確かに質問がなぜ多くのdownvotesを得たか分からない:/ – Havoux