Csharp/CSharp Tutorial/ADO.Net/OleDbDataReader

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

Get SchemaTable from OleDbDataReader

using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
  public class Form1 : System.Windows.Forms.Form
  {
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.TextBox textBox2;
        private System.Windows.Forms.TextBox textBox3;
        private System.Windows.Forms.TextBox textBox4;
    public Form1()
    {
            this.label1 = new System.Windows.Forms.Label();
            this.button1 = new System.Windows.Forms.Button();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.textBox2 = new System.Windows.Forms.TextBox();
            this.textBox3 = new System.Windows.Forms.TextBox();
            this.textBox4 = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // label1
            // 
            this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
            this.label1.Location = new System.Drawing.Point(0, 0);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(232, 48);
            this.label1.TabIndex = 0;
            this.label1.Text = "Data Readers";
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(128, 232);
            this.button1.Name = "button1";
            this.button1.TabIndex = 1;
            this.button1.Text = "Read data";
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(8, 56);
            this.textBox1.Multiline = true;
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(72, 152);
            this.textBox1.TabIndex = 2;
            this.textBox1.Text = "";
            // 
            // textBox2
            // 
            this.textBox2.Location = new System.Drawing.Point(88, 56);
            this.textBox2.Multiline = true;
            this.textBox2.Name = "textBox2";
            this.textBox2.Size = new System.Drawing.Size(72, 152);
            this.textBox2.TabIndex = 3;
            this.textBox2.Text = "";
            // 
            // textBox3
            // 
            this.textBox3.Location = new System.Drawing.Point(168, 56);
            this.textBox3.Multiline = true;
            this.textBox3.Name = "textBox3";
            this.textBox3.Size = new System.Drawing.Size(72, 152);
            this.textBox3.TabIndex = 4;
            this.textBox3.Text = "";
            // 
            // textBox4
            // 
            this.textBox4.Location = new System.Drawing.Point(248, 56);
            this.textBox4.Multiline = true;
            this.textBox4.Name = "textBox4";
            this.textBox4.Size = new System.Drawing.Size(72, 152);
            this.textBox4.TabIndex = 5;
            this.textBox4.Text = "";
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(328, 273);
            this.Controls.Add(this.textBox4);
            this.Controls.Add(this.textBox3);
            this.Controls.Add(this.textBox2);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.label1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
        }
    [STAThread]
    static void Main() 
    {
      Application.Run(new Form1());
    }
        private void button1_Click(object sender, System.EventArgs e)
        {
            string connection1String = "Provider=SQLOLEDB;Data Source=;User ID=sa;Initial Catalog=pubs;"; 
            OleDbConnection connection1 = new OleDbConnection(connection1String);
            OleDbCommand command1 = new OleDbCommand("select * from authors", connection1);
            connection1.Open();
            OleDbDataReader reader1 = command1.ExecuteReader(CommandBehavior.CloseConnection);
            DataTable schemaTable = reader1.GetSchemaTable();
            textBox1.Text += schemaTable.Rows[0][0].ToString() + "\r\n";
            textBox2.Text += schemaTable.Rows[1][0].ToString() + "\r\n";
            textBox3.Text += schemaTable.Rows[2][0].ToString() + "\r\n";
            textBox4.Text += schemaTable.Rows[3][0].ToString() + "\r\n";

            while (reader1.Read())
            {
                if (schemaTable.Rows[0][5].ToString() == "System.String") {
                    textBox1.Text += reader1.GetString(0) + "\r\n";
                }
                if (schemaTable.Rows[0][5].ToString() == "System.Boolean") {
                    textBox1.Text += reader1.GetBoolean(0).ToString() + "\r\n";
                }
                if (schemaTable.Rows[1][5].ToString() == "System.String") {
                    textBox2.Text += reader1.GetString(1) + "\r\n";
                }
                if (schemaTable.Rows[1][5].ToString() == "System.Boolean") {
                    textBox2.Text += reader1.GetBoolean(1).ToString() + "\r\n";
                }
                if (schemaTable.Rows[2][5].ToString() == "System.String") {
                    textBox3.Text += reader1.GetString(2) + "\r\n";
                }
                if (schemaTable.Rows[2][5].ToString() == "System.Boolean") {
                    textBox3.Text += reader1.GetBoolean(2).ToString() + "\r\n";
                    }
                if (schemaTable.Rows[3][5].ToString() == "System.String") 
                {
                    textBox4.Text += reader1.GetString(3) + "\r\n";
                }
                if (schemaTable.Rows[3][5].ToString() == "System.Boolean") {
                    textBox4.Text += reader1.GetBoolean(3).ToString() + "\r\n";
                }
            }
            reader1.Close();
            connection1.Close();
        }
  }

OleDbDataAdapter and SqlDataAdapter: Update

using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
public class OleDbDataAdapterSqlDataAdapter : System.Windows.Forms.Form
{
  private System.Windows.Forms.Button OleDbDataAdapter;
  private System.Windows.Forms.Button SqlDataAdapter;
  private System.Windows.Forms.DataGrid dataGrid1;
  private System.ruponentModel.Container components = null;
  public OleDbDataAdapterSqlDataAdapter()
  {
    InitializeComponent();
  }
  protected override void Dispose( bool disposing )
  {
    if( disposing )
    {
      if (components != null) 
      {
        components.Dispose();
      }
    }
    base.Dispose( disposing );
  }
  private void InitializeComponent()
  {
    this.OleDbDataAdapter = new System.Windows.Forms.Button();
    this.SqlDataAdapter = new System.Windows.Forms.Button();
    this.dataGrid1 = new System.Windows.Forms.DataGrid();
    ((System.ruponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
    this.SuspendLayout();
    // 
    // OleDbDataAdapter
    // 
    this.OleDbDataAdapter.Location = new System.Drawing.Point(16, 16);
    this.OleDbDataAdapter.Name = "OleDbDataAdapter";
    this.OleDbDataAdapter.Size = new System.Drawing.Size(136, 32);
    this.OleDbDataAdapter.TabIndex = 0;
    this.OleDbDataAdapter.Text = "OleDb DataAdapter";
    this.OleDbDataAdapter.Click += new System.EventHandler(this.OleDbDataAdapter_Click);
    // 
    // SqlDataAdapter
    // 
    this.SqlDataAdapter.Location = new System.Drawing.Point(176, 16);
    this.SqlDataAdapter.Name = "SqlDataAdapter";
    this.SqlDataAdapter.Size = new System.Drawing.Size(168, 32);
    this.SqlDataAdapter.TabIndex = 1;
    this.SqlDataAdapter.Text = "SQL DataAdapter";
    this.SqlDataAdapter.Click += new System.EventHandler(this.SqlDataAdapter_Click);
    // 
    // dataGrid1
    // 
    this.dataGrid1.DataMember = "";
    this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
    this.dataGrid1.Location = new System.Drawing.Point(16, 72);
    this.dataGrid1.Name = "dataGrid1";
    this.dataGrid1.Size = new System.Drawing.Size(408, 192);
    this.dataGrid1.TabIndex = 2;
    // 
    // OleDbDataAdapterSqlDataAdapter
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    this.ClientSize = new System.Drawing.Size(440, 273);
    this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                    this.dataGrid1,
                                    this.SqlDataAdapter,
                                    this.OleDbDataAdapter});
    this.Name = "OleDbDataAdapterSqlDataAdapter";
    this.Text = "OleDbDataAdapterSqlDataAdapter";
    ((System.ruponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
    this.ResumeLayout(false);
  }
  [STAThread]
  static void Main() 
  {
    Application.Run(new OleDbDataAdapterSqlDataAdapter());
  }
  private void OleDbDataAdapter_Click(object sender, System.EventArgs e)
    {
        string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\Northwind.mdb";
        string SQL = "SELECT * FROM Customers";
        OleDbConnection conn = new OleDbConnection(ConnectionString);
        conn.Open();
        
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(SQL, conn);
    
        DataSet ds = new DataSet("Customers");         
        adapter.Fill(ds, "Customers");
    adapter.DeleteCommand = new OleDbCommand("DELETE * FROM Customers");
    
    adapter.Update(ds, "Customers");
    dataGrid1.DataSource = ds.DefaultViewManager;
    }
  private void SqlDataAdapter_Click(object sender, System.EventArgs e)
    {
    
        string ConnectionString ="Integrated Security=SSPI;" +
            "Initial Catalog=Northwind;" +
            "Data Source=localhost;";
        string SQL = "SELECT CustomerID, CompanyName FROM Customers";
        SqlConnection conn = new SqlConnection(ConnectionString);
        conn.Open();
        SqlDataAdapter adapter = new SqlDataAdapter(SQL, conn);
        DataSet ds = new DataSet("Customers");
        adapter.Fill(ds);
        dataGrid1.DataSource = ds.DefaultViewManager;           
    }
}

Read result set from OleDbDataReader

using System;
using System.Data;
using System.Data.OleDb;
class MainClass
{
   static void Main(string[] args)
   {
      string connString = "provider=sqloledb;server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI";
      string sql = @"select * from employee";
      OleDbConnection conn = null;
      OleDbDataReader reader = null;
      try
      {
         conn = new OleDbConnection(connString);
         conn.Open();
         OleDbCommand cmd = new OleDbCommand(sql, conn);
         reader = cmd.ExecuteReader();
         Console.WriteLine("Querying database {0} with query {1}\n", conn.Database, cmd.rumandText );
         while(reader.Read()) {
            Console.WriteLine("{0} | {1}", reader["FirstName"].ToString().PadLeft(10), reader[1].ToString().PadLeft(10));
         }
      }
      catch (Exception e)
      {
         Console.WriteLine("Error: " + e);
      }
      finally
      {
         reader.Close();
         conn.Close();
      }
   }
}

Typed Accessors

using System;
using System.Data;
using System.Data.SqlClient;
    class TypedAccessors
    {
        static void Main(string[] args)
        {
            string connString = @"server = .\sqlexpress;integrated security = true;database = northwind";
            string sql = @"select productname, unitprice, unitsinstock,discontinued from products";
            SqlConnection conn = new SqlConnection(connString);
            try{
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlDataReader rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    Console.WriteLine(rdr.GetString(0));
                    Console.WriteLine(rdr.GetDecimal(1));
                    Console.WriteLine(rdr.GetInt16(2));
                    Console.WriteLine(rdr.GetBoolean(3));
                }
                rdr.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error Occurred: " + e);
            }
            finally
            {
                conn.Close();
            } 
        }
    }

Use to OleDbDataReader retrieve data

using System;
using System.Data;
using System.Data.OleDb;
class MainClass
{
  static void Main(string[] args)
  {
        string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\Northwind.mdb";
        string SQL = "SELECT * FROM Orders";
        OleDbConnection conn = new OleDbConnection(ConnectionString);       
        OleDbCommand cmd = new OleDbCommand(SQL);
        cmd.Connection = conn;
        conn.Open();
        OleDbDataReader reader = cmd.ExecuteReader();
        try 
        {
            while (reader.Read()) 
            {
                Console.Write("OrderID:"+reader.GetInt32(0).ToString() );
                Console.Write(" ,");
                Console.WriteLine("Customer:" + reader.GetString(1).ToString() );
            }
        }
        finally 
        {
            reader.Close();
            conn.Close();
        }   
  }
}
OrderID:10330 ,Customer:LILAS
OrderID:10331 ,Customer:BONAP
OrderID:10332 ,Customer:MEREP
OrderID:10333 ,Customer:WARTH
OrderID:10334 ,Customer:VICTE
...
...