如何改变组合框C#mysql的起始位置

时间:2015-01-23 11:11:08

标签: c# mysql combobox

我在使用C#combobox和MySql时遇到了一些麻烦

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

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

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

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

4 个答案:

答案 0 :(得分:0)

你确定你想要的不是combobox.SelectedItem吗? 如果" login"是SQL数据库中的一个字符串。 如果它是整数,您是否尝试过combobox.SelectedIndex+1?如果"登录"这可以解决问题。从" 1"开始在SQL中,SelectedIndex在C#中从0开始。

在任何情况下,如果您的问题是没有选定项目的组合框,请检查以下答案。 (可选)您可以使用OnLoad表单combobox.SelectedItem=1;

答案 1 :(得分:0)

我假设你在谈论的只是提交按钮而没有在组合框上实际选择一个值,对吗?

在执行命令之前,您应该执行一个简单的操作,例如:

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

答案 2 :(得分:0)

愚蠢的想法,但谁知道: Mysql从1计算,你从0开始使用组合框:

(selectedIndex + 1)

答案 3 :(得分:0)

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

  • 另一位开发人员为您的combox添加了排序。现在代替a,b,c,值为c,b,a,所选索引0现在将指向c而不是a,因为它已经习惯了
  • 有人删除了数据库中的用户,所以在数据库中你现在有b,c,d,想一想你在组合框中会有哪些数据?

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

奖励积分:

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