0

我正在开发一个用 C# 编写的 Windows 应用程序,并使用 MS Access 2003 作为我的数据库。当我编写查询时,我遇到了奇怪的问题

SELECT * FROM mytable WHERE columnname='"+combobox.text+"' 

并使用 oledbadapter 执行,数据集可视化工具无法识别该where子句并返回空表。然而

SELECT * FROM mytable WHERE columnname='"+integervalue+"

将返回过滤后的列。

这是我的代码片段:

private void viewinfo_Click(object sender, EventArgs e){
    dataGridView1.Visible = true;
    OleDbCommand cmd;
    string schoolname = cmbschoolname.Text;
    OleDbDataAdapter da = new OleDbDataAdapter("select  * from tblmedic where medicalschool ='"+combobox.text+"'", conn);
    DataTable dt = new DataTable();
    da.Fill(dt);
    dataGridView1.DataSource = dt;
}

输出:当我在 where 子句中传递文本值时返回空表。

4

1 回答 1

1

我已经解决了这个问题。我的 access 2003 表列中的空格就是这种情况。因此在选择 where 子句中的列时使用了 trim() 来清除空格。

private void viewinfo_Click(object sender, EventArgs e){
    dataGridView1.Visible = true;
    OleDbCommand cmd;
    string schoolname = cmbschoolname.Text;
    OleDbDataAdapter da = new OleDbDataAdapter("select  * from tblmedic where medicalschool ='"+combobox.text.ToString().Trim()+"'", conn);
    DataTable dt = new DataTable();
    da.Fill(dt);
    dataGridView1.DataSource = dt;
}

有时愚蠢的错误会让你像任何东西一样渴望:-)

:-)

于 2011-06-27T12:22:03.897 回答