【发布时间】:2015-04-15 22:17:52
【问题描述】:
我有两个 Access 表,即 Projects,包括 projectTitle 和 partyID 的行,以及 ProjectParty,包括 title 和 ID 的行。
私人无效btnSearch_Click(对象发送者,EventArgs e) { OleDbConnection 连接 = 新 OleDbConnection(); conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=HesabKetab.accdb;Persist Security Info=False;"; //在数据库中搜索 OleDbCommand oleCmd = new OleDbCommand(); oleCmd.Connection = conn; 如果(radioBtnByTitle.Checked) { oleCmd.CommandText = "SELECT * FROM Projects WHERE projectTitle=@projectTitle"; oleCmd.Parameters.AddWithValue("@projectTitle", txtProjectTitle.Text); } 否则如果(radioBtnByParty.Checked) { oleCmd.CommandText = "SELECT * FROM Projects WHERE partyID=@partyID"; oleCmd.Parameters.AddWithValue("@partyID", comboParty.SelectedValue.ToString()); } //执行查询 OleDbDataAdapter ole_da = new OleDbDataAdapter(oleCmd); 数据表 dt=新数据表(); 尝试 { conn.Open(); ole_da.填充(dt); } 捕捉(例外前) { MessageBox.Show(ex.ToString()); } dataGridViewDisplaySearchResults.DataSource = dt; conn.Close(); }在上面的代码中,我试图检索 Projects Access 数据库表的值。第二个 if 成功,它将查询的行加载到 DataGridView 中。但是第一个 if(当为 true 时)不会返回预期值。实际上,它不会将任何内容加载到 DataGridView 中。我不知道为什么当我尝试基于 projectTitle 进行选择时查询不起作用。我尝试调试,但不知道将哪些参数传递给 select 命令。我哪里错了?
【问题讨论】:
-
对于第一个 if (如果为真),我在 dataGridViewDisplaySearchResults 中只得到一个空行