我有两个Access表,即Projects,包括projectTitle和partyID的行,以及ProjectParty,包括title和ID行 .
private void btnSearch_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=HesabKetab.accdb;Persist Security Info=False;";
//search in the database
OleDbCommand oleCmd = new OleDbCommand();
oleCmd.Connection = conn;
if (radioBtnByTitle.Checked)
{
oleCmd.CommandText = "SELECT * FROM Projects WHERE projectTitle=@projectTitle";
oleCmd.Parameters.AddWithValue("@projectTitle", txtProjectTitle.Text);
}
else if (radioBtnByParty.Checked)
{
oleCmd.CommandText = "SELECT * FROM Projects WHERE partyID=@partyID";
oleCmd.Parameters.AddWithValue("@partyID", comboParty.SelectedValue.ToString());
}
//execute query
OleDbDataAdapter ole_da = new OleDbDataAdapter(oleCmd);
DataTable dt= new DataTable();
try
{
conn.Open();
ole_da.Fill(dt);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
dataGridViewDisplaySearchResults.DataSource = dt;
conn.Close();
}
在上面的代码中,我试图检索Projects Access数据库表的值 . 第二个if成功,它将查询的行加载到DataGridView中 . 但第一个if(当为true时)不返回预期值 . 实际上,它不会在DataGridView中加载任何内容 . 当我尝试基于projectTitle进行选择时,我不知道为什么查询不起作用 . 我试过调试,但我不知道哪些参数被传递给select命令 . 我哪里错了?
1 回答
而不是txtProjectTitle.ToString()在第一个条件,不是它txtProjectTitle.Text