首页 文章

OleDbCommand选择不返回预期的行

提问于
浏览
0

我有两个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 回答

  • 1

    而不是txtProjectTitle.ToString()在第一个条件,不是它txtProjectTitle.Text

相关问题