如何更改起始位置组合框 C# mysql
how to change starting position combobox C# mysql
我在 MySql
中使用 C# 组合框有点麻烦
所以,首先...我在表单上有组合框和按钮。提交表单后,执行 MySql 查询,如:
"select * from db1.users where login='"+combobox.SelectedIndex+"')";
效果很好,但是....如果我们提交组合框的第一个元素 - MySql 发生外键问题(= NULL 等等)。
任何想法如何让他知道,组合框中的第一个元素不是 NULL?
您确定您想要的不是combobox.SelectedItem
吗?
如果 "login" 是 SQL 数据库中的字符串,就会出现这种情况。
如果是整数,你试过combobox.SelectedIndex+1
吗?如果 "login" 在 SQL 中从“1”开始,而 SelectedIndex 在 C# 中从 0 开始,这可以解决问题。
无论如何,如果您的问题是组合框没有选定的项目,请检查下面的答案。
您可以选择让表单 OnLoad 执行 combobox.SelectedItem=1;
我假设您是在谈论只提交按钮,而没有在组合框中实际选择一个值,对吗?
您应该在执行命令之前做一个简单的 if,例如:
if (combobox.SelectedIndex != null)
{
codethis("select * from db1.users where login='"+combobox.SelectedIndex+"')");
}
else
{
//do something else
}
愚蠢的想法,但谁知道呢:
Mysql 从 1 开始计数,组合框从 0 开始,您试过了吗:
(selectedIndex + 1)
您可能希望停止使用 SelectedIndex
,因为它并不代表您的 数据。问题甚至可能不在您当前的情况下(1 和 0 索引不匹配)。考虑以下因素:
- 另一位开发人员向您的组合框添加了排序。现在
a,b,c
的值是 c,b,a
并且选定的索引 0 现在将指向 c
而不是像以前那样 a
- 有人删除了数据库中的用户,所以在数据库中你现在有
b,c,d
,想想你的组合框中会有什么数据?
要解决此问题,您应该使用 value
。每个组合框都应该有:显示的文本、相应的值(对用户隐藏)和选定的索引。使用选定的索引(或选定的项目),您可以获得项目的值,该值应该是您的 database_id
。例如,如果该值不适用于开箱即用的组合框类型,请参阅 this answer。
奖励积分:
- 使用参数化查询(防止 SQL 注入攻击)
- 从不存储密码,而是存储密码哈希和随机盐 (read more)
我在 MySql
中使用 C# 组合框有点麻烦所以,首先...我在表单上有组合框和按钮。提交表单后,执行 MySql 查询,如:
"select * from db1.users where login='"+combobox.SelectedIndex+"')";
效果很好,但是....如果我们提交组合框的第一个元素 - MySql 发生外键问题(= NULL 等等)。
任何想法如何让他知道,组合框中的第一个元素不是 NULL?
您确定您想要的不是combobox.SelectedItem
吗?
如果 "login" 是 SQL 数据库中的字符串,就会出现这种情况。
如果是整数,你试过combobox.SelectedIndex+1
吗?如果 "login" 在 SQL 中从“1”开始,而 SelectedIndex 在 C# 中从 0 开始,这可以解决问题。
无论如何,如果您的问题是组合框没有选定的项目,请检查下面的答案。
您可以选择让表单 OnLoad 执行 combobox.SelectedItem=1;
我假设您是在谈论只提交按钮,而没有在组合框中实际选择一个值,对吗?
您应该在执行命令之前做一个简单的 if,例如:
if (combobox.SelectedIndex != null)
{
codethis("select * from db1.users where login='"+combobox.SelectedIndex+"')");
}
else
{
//do something else
}
愚蠢的想法,但谁知道呢: Mysql 从 1 开始计数,组合框从 0 开始,您试过了吗:
(selectedIndex + 1)
您可能希望停止使用 SelectedIndex
,因为它并不代表您的 数据。问题甚至可能不在您当前的情况下(1 和 0 索引不匹配)。考虑以下因素:
- 另一位开发人员向您的组合框添加了排序。现在
a,b,c
的值是c,b,a
并且选定的索引 0 现在将指向c
而不是像以前那样a
- 有人删除了数据库中的用户,所以在数据库中你现在有
b,c,d
,想想你的组合框中会有什么数据?
要解决此问题,您应该使用 value
。每个组合框都应该有:显示的文本、相应的值(对用户隐藏)和选定的索引。使用选定的索引(或选定的项目),您可以获得项目的值,该值应该是您的 database_id
。例如,如果该值不适用于开箱即用的组合框类型,请参阅 this answer。
奖励积分:
- 使用参数化查询(防止 SQL 注入攻击)
- 从不存储密码,而是存储密码哈希和随机盐 (read more)