使用C#WPF中的MySQL数据库使Datagrid可搜索

时间:2014-04-08 20:45:29

标签: c# mysql

所以我让我的dataGrid在C#WPF中工作,它连接到我的MySQL数据库并显示数据库中人员的名字和姓氏。我现在要做的是创建一个搜索按钮,搜索在文本框中输入的姓氏,并仅显示数据网格中的姓氏。我知道这段代码会出错,但我不知道该怎么做。谢谢你的帮助

这将连接到数据库以获取名字姓氏,并且工作正常

try
{
    command = connc.CreateCommand();
    command.CommandText = "SELECT First_name, Last_name FROM studentinfo";
    MySqlDataReader reader = command.ExecuteReader();
    string result = string.Empty;
    while (reader.Read())
    {
        result += reader["First_name"].ToString() + " " + 
        reader["Last_name"].ToString() + " ";
    }
    read = result.Split(' ');
    reader.Close();
    int count = 0;


    mySqlDataAdapter = new MySqlDataAdapter("SELECT First_name, Last_name FROM 
    studentinfo", connc);
    DataSet DS = new DataSet();
    mySqlDataAdapter.Fill(DS);
    data.SetBinding(ItemsControl.ItemsSourceProperty, new Binding { Source = 
    DS.Tables[0] });

    MessageBox.Show("S");
}
catch (Exception ex)
{
    MessageBox.Show("something went wrong: " + ex.ToString());
}

这里我试图使用文本框使数据网格可搜索

    command = connc.CreateCommand();
    mySqlDataAdapter = new MySqlDataAdapter("SELECT Last_name FROM studentinfo 
    WHERE Last_name = @Last_name", connc);
    command.Parameters.AddWithValue("@Last_name", txtsearch.Text);
    DataSet DS = new DataSet();
    mySqlDataAdapter.Fill(DS);
    data.SetBinding(ItemsControl.ItemsSourceProperty, new Binding { Source = 
    DS.Tables[0] });

    MessageBox.Show("S");
}
catch (Exception ex)
{
    MessageBox.Show("something went wrong: " + ex.ToString());
}
finally
{
    connc.Close();
}

1 个答案:

答案 0 :(得分:0)

在您使用文本框的代码段中,您永远不会执行while(reader.read()){} - 循环。

然后,为了让您的生活更轻松:创建一个班级"学生" 你把所有东西都放在字符串中,用空格粘在一起,然后用" split" -method分隔它们。这就像折磨自己一样。 做类似的事情:

 public class Student
    {
        string firstname;
        string lastname;

        public Student(string pFirstName, string pLastName)
        {
            firstname = pFirstName;
            lastname = pLastName;
        }

        public string Firstname
        {
            get { return firstname; }
            set { firstname = value; }
        }

        public string Lastname
        {
            get { return lastname; }
            set { lastname = value; }
        }

    }

然后你可以使用学生列表填写你的Reader.read() - 东西:

List<Student> results = new List<Student>();
// build your connection
while(reader.read())
{
results.add(new Student(reader["First_name"], reader["Last_name"]));
}

然后,您可以在表单上放置一个BindingSource并说:

myBindingSource.DataSource = results;
publisherDataGridView.DataSource = myBindingSource;