私は、.NETフレームワークとC#言語を使用してフォームアプリケーション内で自分の学校プロジェクトのイントラネットを構築しています。この関数は、フォーム内のデータグリッドにデータを設定します。ただし、while構造体内のコードは実行されません。私はデバッガで一歩一歩を踏み出しました。私は、 "dr"オブジェクトのread()メソッドが2つの内部結合テーブルを通らないと考えていますが、ボタンを押すと、データベースに登録されていれば動作します。私はこのサイトで検索したことで、私のSQLステートメントに何か問題があると思いますが、バグを解決することはできませんでした。 Carti.NotaおよびCarti.Stocは、Microsoft Access 2013データベース内のNumber型の列です。C#.NET:OleDbDataReaderクラスの読み取りメソッドが実行されない
private void PopulateGridBooks()
{
dataGridView1.Rows.Clear();
using (OleDbConnection connect = new OleDbConnection(ConfigurationManager.ConnectionStrings["LibrarieConectare"].ConnectionString))
{
OleDbCommand command = connect.CreateCommand();
command.Parameters.AddWithValue("@titlu", cautaTitlu.Text);
command.CommandText =
" SELECT Carti.IDCarte, Carti.Titlu, Carti.Editie, Carti.An, Carti.ISBN, Carti.Nota, Carti.IDAutor, Carti.Stoc, Edituri.NumeEditura " +
" FROM (Carti INNER JOIN Edituri ON Carti.IDEditura = Edituri.IDEditura) " +
" WHERE Titlu LIKE '%@titlu%'";
try
{
connect.Open();
OleDbDataReader dr = command.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
dataGridView1.Rows.Add(dr["IDCarte"], dr["Titlu"], dr["NumeEditura"], dr["Stoc"]);
}
}
}
catch (Exception ex)
{
MessageBox.Show("Eroare la populare data grid carti: " + ex.Message);
}
}
}
は、テキストとしてのコードを追加しますリンクされた画像としてではありません。 –
出力として何が得られますか? –
クイックルックでは、()は結合の周りでは必要ありません。デバッグ中にコマンドテキストからクエリテキストを取得し、それをクエリアナライザに貼り付けるとどうなりますか?結果を返しますか?また、dr.Read()をwhileの上に移動し、変数として設定します。例えばvar x = dr.Read()そしてデバッガのxの値を検査して、どこが間違っているのかを理解してください。最後に、あなたは例外で何かを得ていますか? –