[ad_1]
これを実行しても何も起こりません
データグリッドビューは更新されません
C#
public void Search() { OleDbCommand ocm = new OleDbCommand("SELECT Firstname FROM students WHERE Firstname LIKE '% Hello %' ", conn); conn.Open(); ocm.ExecuteNonQuery(); conn.Close(); }
解決策 1
ExecuteNonQuery は、INSERT、DELETE、UPDATE などのコマンドを発行するように設計されています。 SELECT での使用は意図されていません。 あなたができることは、次のように ExecuteDataReader を使用することです:
C#
private List<string> names = new List<string>(); public void Search() { using (OleDbCommand ocm = new OleDbCommand("SELECT Firstname FROM students WHERE Firstname LIKE '% Hello %' ", conn)) { conn.Open(); OleDbDataReader reader = ocm.ExecuteDataReader(); while (reader.Read()) { names.Add(reader[0]); } conn.Close(); } }
解決策 2
DataAdapter を使用して、データベースからテーブルを取得できます。
C#
conn.Open(); OleDbDataAdapter ad = new OleDbDataAdapter("", conn); DataTable dt = new DataTable(); ad.Fill(dt); gridView.DataSource = dt;
解決策 3
こんにちは。次のコードを参照できます。
C#
public void Search() { using (OleDbConnection con = new OleDbConnection(constring)) { con.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT Firstname FROM students WHERE Firstname LIKE '% Hello %' ", con); DataTable tb = new DataTable(); adapter.Fill(tb); dataGridView1.DataSource = tb; } }
ご不明な点がございましたら、お問い合わせください。
解決策 4
LINQ-To-DataSet (which i prefer): var filtered = tb.AsEnumerable() .Where(r => r.Field<String>("CREATOR").Contains(searchstring)); ADO.NET(DataTable.Select): DataRow[] filteredRows = tb.Select("CREATOR LIKE '%" + searchstring + "%'"); ADO.NET(DataView.RowFilter): tb.DefaultView.RowFilter = "CREATOR LIKE '%" + searchstring + "%'";
[ad_2]
コメント