Csharp/C Sharp/Database ADO.net/DataView

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Create DataView through DataTable

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();
         }
      }
   }


illustrates the use of a DataView object to filter and sort rows

/*
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();
  }
}


use the Find() and FindRows() methods of a DataView to find DataRowView objects

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("");
        }
    }
}