Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取文本框以显示MySQL同一行的记录_C#_Mysql_Database_Textbox - Fatal编程技术网

C# 获取文本框以显示MySQL同一行的记录

C# 获取文本框以显示MySQL同一行的记录,c#,mysql,database,textbox,C#,Mysql,Database,Textbox,我有下面的代码,当我填写一个名字或任何可能的名字时,它会在MySQL数据库中搜索,并向我显示所有你输入的名字 MySqlConnection connection2 = new MySqlConnection("Server=" + server + ";" + "Port=" + port + ";" + "Database=" + database + ";" + "Uid=" + uid + ";" + "Password=" + password + ";");

我有下面的代码,当我填写一个名字或任何可能的名字时,它会在MySQL数据库中搜索,并向我显示所有你输入的名字

MySqlConnection connection2 = new MySqlConnection("Server=" + server + ";" + "Port=" + port + ";" + "Database=" + database + ";" + "Uid=" + uid + ";" + "Password=" + password + ";");


            connection2.Open();
            string query = @"SELECT DISTINCT name2 FROM childDatabase WHERE name2 Like '%" + childSearch.Text + "%'";
                    MySqlCommand cmd = new MySqlCommand(query, connection2);

                cmd.ExecuteNonQuery();

                MySqlDataAdapter da = new MySqlDataAdapter(query, connection2);
                DataTable dt = new DataTable();
                da.Fill(dt);


                childSearchCombo.DataSource = dt;
                childSearchCombo.ValueMember = dt.Columns[0].ColumnName;
                connection2.Close();
现在,这段代码很好,它用于我的组合框。我需要的是,当你按下按钮(比如…btnShow)时,它应该在同一行中显示从数据库检索到的其余数据。现在它只显示[0]处的索引,这显然不是每个记录的动态索引,这是代码中的明显缺陷,就连我都能理解

这是它的代码:

        MySqlConnection connection2 = new MySqlConnection("Server=" + server + ";" + "Port=" + port + ";" + "Database=" + database + ";" + "Uid=" + uid + ";" + "Password=" + password + ";");

        connection2.Open();
        string query = @"SELECT DISTINCT name2, age, gender FROM childDatabase";
        MySqlCommand cmd = new MySqlCommand(query, connection2);

        cmd.ExecuteNonQuery();

        MySqlDataAdapter da = new MySqlDataAdapter(query, connection2);
        DataTable dt = new DataTable();
        da.Fill(dt);


        firstNameDisp.Text = dt.Columns[0].ColumnName;
        ageDisp.Text = dt.Columns[1].ColumnName;
        genderDisp.Text = dt.Columns[2].ColumnName;
因此,基本上,代码的最后3行应该在组合框中选择的同一行中显示姓名、年龄和性别


我找了很长时间,我的知识似乎还没有达到标准。感谢您的帮助

您应该使用
using
语句来正确处理MySQL对象

这是一段代码片段,让您开始学习

DataTable dt = new DataTable();
string _CS = "Server=" + server + ";Port=" + port + ";Database=" + database + ";Uid=" + uid + ";Password=" + password;
using (MySqlConnection connection2 = new MySqlConnection(_CS))
{
    connection2.Open();
    string query = @"SELECT DISTINCT * FROM childDatabase";
    using (MySqlCommand cmd = new MySqlCommand(query, connection2))
    {
        // cmd.ExecuteNonQuery(); There's no need to execute this. da.Fill() will 
        // execute your command.
        using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
            da.Fill(dt);
    }
    // connection2.Close(); No need to close either. The using statement does that.
}

foreach (var st in dt.AsEnumerable())
{
    if (st.Field<string>("name2").Contains(childSearch.Text))
    // or .Contains(yourComboBox.SelectedItem.ToString())
    {
        childSearchCombo.Items.Add(st.Field<string>("name2"));
        firstNameDisp.Text = st.Field<string>("your column name");
        ageDisp.Text = st.Field<string>(0); // or by index
        genderDisp.Text = st.Field<string>("column name or index");
        // Note that st.Field<T> also can be a decimal, a bool, an int etc..
     }
}
DataTable dt=newdatatable();
字符串“CS=”Server=“+Server+”;Port=“+Port+”;Database=“+Database+”;Uid=“+Uid+”;Password=“+Password;
使用(MySqlConnection connection2=新的MySqlConnection(_-CS))
{
连接2.Open();
字符串查询=@“从childDatabase中选择不同的*”;
使用(MySqlCommand cmd=newmysqlcommand(查询,连接2))
{
//cmd.ExecuteNonQuery();不需要执行此命令。da.Fill()将
//执行你的命令。
使用(MySqlDataAdapter da=newmysqldataadapter(cmd))
da.填充(dt);
}
//connection2.Close();也不需要关闭。using语句会这样做。
}
foreach(dt.AsEnumerable()中的var st)
{
if(st.Field(“name2”)包含(childSearch.Text))
//或.Contains(您的ComboBox.SelectedItem.ToString())
{
childSearchCombo.Items.Add(st.Field(“name2”);
firstNameDisp.Text=st.Field(“您的列名”);
ageDisp.Text=st.Field(0);//或按索引
genderDisp.Text=st.Field(“列名或索引”);
//请注意,st.字段也可以是十进制、布尔、整数等。。
}
}
这样,您就不需要查询每一点。我也不是100%肯定这会完全奏效,我想你得绕一圈


无论如何,可能有很多更好的方法来实现这一点。但我认为这是一个很好的学习曲线。祝你好运

经过一点努力,这一切都成功了。非常感谢你,伙计@天蝎蓝很乐意帮忙:)