【问题标题】:ERROR data type mismatch in criteria expression标准表达式中的 ERROR 数据类型不匹配
【发布时间】:2021-08-16 02:16:52
【问题描述】:

尝试运行下面的代码,这样当用户从 Combobox 中选择 ID 时,我的数据库中具有该 ID 的任何字段都会填写表单中的标签。

屏幕截图中的此错误不断出现。我是 c# 编程的新手,所以,一些友好的帮助会很棒:)

Error

    private void button1_Click_1(object sender, EventArgs e)
        {
            try
            {
                con.Open();
                OleDbCommand

 command = new OleDbCommand("SELECT * FROM tbl_newsurvey WHERE ID= '" + comboBoxID.Text + "'");
            command.Connection = con;
            cmd.Parameters.AddWithValue("ID", comboBoxID.SelectedIndex.ToString());
            OleDbDataReader selectreader = command.ExecuteReader();
            

            while (selectreader.Read() == true)
            {

                string name = selectreader["txtname"].ToString();
                lblname.Text = Name;

            }
            con.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error" + ex);
        }
       

【问题讨论】:

  • tbl_newsurvey 中的ID 列的类型是什么?另外,您似乎在 trying 使用查询参数(这很好!)...但您实际上并没有在查询中使用查询参数 - 您只是放置了文本版本。
  • (我希望查询以WHERE ID=? 结尾。我们不知道您是否真的要传入选定的索引或选定的值......)跨度>
  • tbl_newsurvey中ID的类型是Number
  • 我正在使用 MS Access
  • 我不知道我做了什么,但我将数据类型更改为短文本,然后更改为长文本以查看和测试。错误消失了,但每当您单击按钮时,它会在标签中显示为 form name

标签: c# error-handling type-mismatch


【解决方案1】:

您能否将您的 ID 字段转换为数据库中的 varchar 并检查以下行是否是引发错误的行?
cmd.Parameters.AddWithValue("ID", comboBoxID.SelectedIndex.ToString());

请参阅此documentation

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多