我有一个Winforms连接到SQL Server 2008数据库。使用Winforms连接到SQL Server以轻松过滤数据
我希望能够轻松过滤一张表中的数据。
这里是我想什么的一个示例:
- 有在表3列,我将具有将对应于这三个窗体上三个文本框(或任何其它有用的控制)列。
- 用户将能够在任何一个这些字段中输入值,并检索与该字段有关的其余值。
这是否已经有一个简单的解决方案?
我有一个Winforms连接到SQL Server 2008数据库。使用Winforms连接到SQL Server以轻松过滤数据
我希望能够轻松过滤一张表中的数据。
这里是我想什么的一个示例:
这是否已经有一个简单的解决方案?
是的,你可以使用DataSet或DataReader。
http://msdn.microsoft.com/en-us/library/ms171897%28v=vs.80%29.aspx
希望它会有所帮助 – 2011-06-02 15:11:32
我不认为有这样做的又独特的方式。无论如何,你可以简单地使用SqlCommand它可以让你执行一个存储过程或查询,只要你喜欢。你通过三个过滤器值为。
这里是一个小例子:
private static void ReadOrderData(string connectionString)
{
string queryString =
"SELECT * FROM MyTable Where (FieldOne == @ParameterOne Or FieldTwo = @ParameterTwo Or FieldThree = @ParameterThree)";
using (SqlConnection connection = new SqlConnection(
connectionString))
{
// Create the command
SqlCommand command = new SqlCommand(
queryString, connection);
// Add the parameters
command.Parameters.Add(new SqlParameter("ParameterOne", txtMyTextBox1.Text));
command.Parameters.Add(new SqlParameter("ParameterTwo", txtMyTextBox2.Text));
command.Parameters.Add(new SqlParameter("ParameterThree", txtMyTextBox3.Text));
connection.Open();
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}",
reader[0], reader[1]));
}
}
finally
{
// Always call Close when done reading.
reader.Close();
}
}
}
然后使用SqlDataReader对象来获取值。
如果您要过滤的表非常小并且不经常更改(甚至是只读),请考虑另一种方法:只查询数据库一次以将所有数据下载到DataTable,即显示在DataGridView中,然后使用数据表的'.DefaultView.RowFilter = ...'将过滤器应用于DataTable对象。由于这一点,每次更改过滤条件时都不必连接和查询数据库。 – mj82 2011-06-02 15:20:02