【问题标题】:Is my logic correct? I'm trying to get data from combobox(dropdownlist) and use that data to search and display information in checkedlistbox我的逻辑正确吗?我正在尝试从组合框(下拉列表)中获取数据并使用该数据在选中列表框中搜索和显示信息
【发布时间】:2014-02-18 08:21:15
【问题描述】:

每当我进行搜索时,我都会收到此错误:Invalid column name 'datafromcombobox'

我尝试在我的 SQL 查询中对数据进行硬编码,它可以正常工作。知道我的代码有什么问题吗?

代码如下:

        string selectedMedication = cboMedicationType.SelectedItem.ToString();

        string strMedications = "SELECT medicationName FROM MEDICATION WHERE medicationType= (" + selectedMedication + ")";
        SqlCommand cmdMedications = new SqlCommand(strMedications, connection);

        connection.Open();
        SqlDataReader readMedications = cmdMedications.ExecuteReader();

        while (readMedications.Read())
        {
            string medicationVar = readMedications["medicationName"].ToString();
            clbMedication.Items.Add(medicationVar, true);

        }
        readMedications.Close();
        connection.Close();

【问题讨论】:

    标签: c# winforms visual-studio-2010 search combobox


    【解决方案1】:

    我认为您只是忘记了查询中的引号。 这应该有效:

    string strMedications = "SELECT medicationName FROM MEDICATION WHERE medicationType=   ('" + selectedMedication + "')";
    

    【讨论】:

      【解决方案2】:

      我会这样做:

      using (SqlCommand cmdMedications = new SqlCommand(strMedications, connection))
      {
          string strMedications = "SELECT medicationName FROM MEDICATION WHERE medicationType = @selectedMedication;
          command.Parameters.AddWithValue("selectedMedication", cboMedicationType.SelectedItem.ToString());
          connection.Open();
          using (SqlDataReader readMedications = cmdMedications.ExecuteReader())
          {
              while (readMedications.Read())
              {
                  string medicationVar = readMedications["medicationName"].ToString();
                  clbMedication.Items.Add(medicationVar, true);
              }
          }
          connection.Close();
      }
      

      我改变了几件事:

      • 始终使用参数化查询。如果不这样做,您可能会成为SQL Injection 的受害者。我在你的代码中改变了它。
      • 通常最好在您的代码中使用using (see this article),因为这样您就不需要closedispose 对象——using 语句会处理这些问题。李>
      • 至于您的错误,可能是您的查询中的错误,但我的代码应该会解决这个问题。

      如果我能解决其他问题,请告诉我。我希望这会有所帮助!

      附:我主要是在没有调试的情况下键入此内容,因此您可能需要调整一些小东西,但我认为您应该了解它的要点。

      【讨论】:

        猜你喜欢
        • 2014-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多