Csharp/C Sharp/Database ADO.net/DataView
Create DataView through DataTable
<source lang="csharp"> using System; using System.Data; using System.Data.SqlClient;
class DataViewExample { static void Main() { string connString = "server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI"; string sql = @"select * from employee"; SqlConnection conn = new SqlConnection(connString); try { SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = new SqlCommand(sql, conn); DataSet ds = new DataSet(); da.Fill(ds, "employee"); DataTable dt = ds.Tables["employee"]; DataView dv = new DataView(dt,"lastname = "Z"", "lastname", DataViewRowState.CurrentRows); foreach (DataRowView drv in dv) { for (int i = 0; i < dv.Table.Columns.Count; i++){ Console.Write(drv[i] + "\t"); } } } catch(Exception e) { Console.WriteLine("Error: " + e); } finally { conn.Close(); } } }
</source>
illustrates the use of a DataView object to filter and sort rows
<source lang="csharp"> /* Mastering Visual C# .NET by Jason Price, Mike Gunderloy Publisher: Sybex; ISBN: 0782129110
- /
/*
Example23_5.cs illustrates the use of a DataView object to filter and sort rows
- /
using System; using System.Data; using System.Data.SqlClient; public class Example23_5 {
public static void Main() { // formulate a string containing the details of the // database connection string connectionString = "server=localhost;database=Northwind;uid=sa;pwd=sa"; // create a SqlConnection object to connect to the // database, passing the connection string to the constructor SqlConnection mySqlConnection = new SqlConnection(connectionString); // formulate a string containing a SELECT statement string selectString = "SELECT CustomerID, CompanyName, City, Country " + "FROM Customers"; // create a SqlCommand object to hold the SELECT statement SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); // set the CommandText property of the SqlCommand object to // the SELECT string mySqlCommand.rumandText = selectString; // create a SqlDataAdapter object SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(); // set the SelectCommand property of the SqlAdapter object // to the SqlCommand object mySqlDataAdapter.SelectCommand = mySqlCommand; // create a DataSet object to store the results of // the SELECT statement DataSet myDataSet = new DataSet(); // open the database connection using the // Open() method of the SqlConnection object mySqlConnection.Open(); // use the Fill() method of the SqlDataAdapter object to // retrieve the rows from the table, storing the rows locally // in a DataTable of the DataSet object Console.WriteLine("Retrieving rows from the Customers table"); mySqlDataAdapter.Fill(myDataSet, "Customers"); // create a DataView object DataView myDataView = new DataView(myDataSet.Tables["Customers"]); // set the RowFilter property of the DataView object myDataView.RowFilter = "Country = "UK""; // set the Sort property of the DataView object myDataView.Sort = "CustomerID ASC"; // display the rows in the DataView object foreach (DataRowView myDataRowView in myDataView) { for (int count = 0; count < myDataView.Table.Columns.Count; count++) { Console.WriteLine(myDataRowView[count]); } } // close the database connection using the Close() method // of the SqlConnection object mySqlConnection.Close(); }
}
</source>
use the Find() and FindRows() methods of a DataView to find DataRowView objects
<source lang="csharp">
using System;
using System.Data;
using System.Data.SqlClient;
class FindingDataRowViews {
public static void Main() { SqlConnection mySqlConnection = new SqlConnection( "server=localhost;database=Northwind;uid=sa;pwd=sa" ); SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); mySqlCommand.rumandText = "SELECT CustomerID, CompanyName, Country " + "FROM Customers"; SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(); mySqlDataAdapter.SelectCommand = mySqlCommand; DataSet myDataSet = new DataSet(); mySqlConnection.Open(); mySqlDataAdapter.Fill(myDataSet, "Customers"); mySqlConnection.Close(); DataTable customersDT = myDataSet.Tables["Customers"]; string filterExpression = "Country = "UK""; string sortExpression = "CustomerID"; DataViewRowState rowStateFilter = DataViewRowState.OriginalRows; DataView customersDV = new DataView(); customersDV.Table = customersDT; customersDV.RowFilter = filterExpression; customersDV.Sort = sortExpression; customersDV.RowStateFilter = rowStateFilter; foreach (DataRowView myDataRowView in customersDV) { for (int count = 0; count < customersDV.Table.Columns.Count; count++) { Console.WriteLine(myDataRowView[count]); } Console.WriteLine(""); } int index = customersDV.Find("BSBEV"); Console.WriteLine("BSBEV found at index " + index + "\n"); DataRowView[] customersDRVs = customersDV.FindRows("BSBEV"); foreach (DataRowView myDataRowView in customersDRVs) { for (int count = 0; count < customersDV.Table.Columns.Count; count++) { Console.WriteLine(myDataRowView[count]); } Console.WriteLine(""); } }
}
</source>