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



我在MySql中使用C#组合框时遇到了一点麻烦

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

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

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

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

愚蠢的想法,但谁知道:Mysql 从 1 开始计数,组合框从 0 开始,您是否尝试过:

(selectedIndex + 1)

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

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

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

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

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

您可能

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

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

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

积分:

  • 使用参数化查询(防止 SQL 注入攻击)
  • 切勿存储密码,而是存储密码哈希和随机盐(了解更多)

最新更新