【问题标题】:how to change starting position combobox C# mysql如何更改起始位置组合框 C# mysql
【发布时间】:2015-03-22 09:59:40
【问题描述】:

在 MySql 中使用 C# 组合框有点麻烦

所以,首先...我在表单上有组合框和按钮。提交表单后,执行 MySql 查询,如:

"select * from db1.users where login='"+combobox.SelectedIndex+"')";

效果很好,但是....如果我们提交组合框的第一个元素 - MySql FOREIGN KEY 问题发生(= NULL 等)。

任何想法如何让他知道,组合框中的第一个元素不是 NULL ?

【问题讨论】:

    标签: c# mysql combobox


    【解决方案1】:

    愚蠢的想法,但谁知道: Mysql从1开始计数,combobox从0开始你试过了吗:

    (selectedIndex + 1)
    

    【讨论】:

      【解决方案2】:

      我假设您只是在讨论提交按钮而不实际选择组合框上的值,对吧?

      你应该在执行你的命令之前做一个简单的 if,比如:

      if (combobox.SelectedIndex != null)
      {
        codethis("select * from db1.users where login='"+combobox.SelectedIndex+"')");
      }
      else
      {
        //do something else
      }
      

      【讨论】:

        【解决方案3】:

        你确定你想要的不是combobox.SelectedItem? 如果“login”是 SQL 数据库中的字符串,就会出现这种情况。 如果是整数,你试过combobox.SelectedIndex+1吗?如果“登录”在 SQL 中从“1”开始,而 SelectedIndex 在 C# 中从 0 开始,这可以解决问题。

        无论如何,如果您的问题是组合框没有选定项目,请检查以下答案。 或者,您可以让表单 OnLoad 执行 combobox.SelectedItem=1;

        【讨论】:

          【解决方案4】:

          您可能希望停止使用SelectedIndex,因为它不代表您的数据。问题甚至可能不在您当前的情况下(1s 和 0s 索引之间的不匹配)。考虑以下几点:

          • 另一位开发人员将排序添加到您的组合框中。现在,值不是a,b,c,而是c,b,a,并且选择的索引0现在将指向c,而不是以前的a
          • 有人删除了数据库中的用户,所以在数据库中你现在有b,c,d,想想你的组合框中会有什么数据?

          要解决此问题,您应该使用value。每个组合框应该有:显示的文本、对应的值(对用户隐藏)和选定的索引。使用选定的索引(或选定的项目),您将获得项目的值,该值应该是您的 database_id。例如,如果该值不适用于您的组合框类型,请参阅this answer

          奖励积分:

          • 使用参数化查询(防止 SQL 注入攻击)
          • 从不存储密码,而是存储密码哈希和随机盐 (read more)

          【讨论】:

            猜你喜欢
            • 2021-06-05
            • 1970-01-01
            • 1970-01-01
            • 2023-04-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-24
            • 1970-01-01
            相关资源
            最近更新 更多