我正在为我的办公室开发一些winforms应用程序。在我的应用程序中,我有超过50个组合框,我想连接MySQL数据库并检索数据。每个组合框都应从某些MySQL数据库列中检索数据。我使用下面的代码成功建立连接并将数据检索到组合框的任何方式。
但现在我有一个非常奇怪的问题。在我的MySQL数据库中有很多空值(有些列包含30行,而有些列只有1或2行)。在数据检索组合框后,第一个组合框(与第二列相关)正确显示数据,但从第二列开始,它只显示一行或两行。列中未显示的所有其他值。我浏览了一些论坛并将我的al null值设置为空字符串。但在那之后,组合框显示了最后一个字段后的空白条目列表。
我的查询后我也尝试过IS NOT NULL,这也不起作用:(
如何克服这种情况?我想检索所有组合框的数据,没有任何空值或空值。我正在使用.net framework 2.0
这是可以在C#或SQL查询中以编程方式进行,还是应该更改我的数据库结构?
(我对MySQL没有很好的了解。我使用workbench来创建数据库:()
这是我目前的代码
void combobox()
{
string constring = string.Format("datasource='{0}';port='{1}';database='{2}';username=****************;password=************;Connect Timeout=180;Command Timeout=180", dbserverip.Text,curport.Text,currentdb.Text);
string Query = "select * from estifdb.customconditions ;";
MySqlConnection conn = new MySqlConnection(constring);
MySqlCommand cmd = new MySqlCommand(Query, conn);
MySqlDataReader myreader666;
try
{
conn.Open();
myreader666 = cmd.ExecuteReader();
while (myreader666.Read())
{
string sName = myreader666.GetString("someval1");
applicationcombobox.Items.Add(sName);
string sName2 = myreader666.GetString("someval2");
applicationcombobox2.Items.Add(sName2);
string sName3 = myreader666.GetString("someval3");
applicationcombobox3.Items.Add(sName3);
string sName4 = myreader666.GetString("someval4");
applicationcombobox4.Items.Add(sName4);
string sName5 = myreader666.GetString("someval5");
applicationcombobox5.Items.Add(sName5);
// and 50 left
答案 0 :(得分:1)
我认为你需要这样的东西:
while (myreader666.Read()) {
for (int i = 0; i < myreader666.FieldCount; ++i) {
if (reader.IsDBNull(i))
continue;
String fieldName = myreader666.GetName(i);
String fieldValue = myreader666.GetValue(i).ToString();
//TODO: write a method to find out ComboBox by field name
ComboBox combo = GetComboByFieldName(fieldName);
if (combo != null)
combo.Items.Add(fieldValue);
}
}
您必须实施方法,以便通过字段名称找出正确的ComboBox
答案 1 :(得分:0)
尝试使用ABS,如SELECT ABS(column_name)AS AbsoluteA FROM YourTable
答案 2 :(得分:0)
if(myreader666.GetString("someval1") != null)
{
string sName = myreader666.GetString("someval1");
applicationcombobox.Items.Add(sName);
}
你可以这样做。可能你也不想将empty.string添加到comboBoxes中。在这种情况下,请添加到if(myreader666.GetString("someval1") != null && myreader666.GetString("someval1").Trim() != "")
您的设计很糟糕,您可以使用for循环检查答案!
编辑:
if(myreader666.GetString("someval1") != null)
{
string sName = myreader666.GetString("someval1");
applicationcombobox2.Items.Add(sName);
}
if(myreader666.GetString("someval2") != null)
{
string sName2 = myreader666.GetString("someval2");
applicationcombobox.Items.Add(sName2);
}
以及每个someval的等等
答案 3 :(得分:0)
您是否也尝试过这样的事情:
string sName = myreader666.GetString("1003");
if(sName != null && !sName.Equals(""))
applicationcombobox.Items.Add(sName);