所以我让我的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();
}
答案 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;