ADO.NET-轉

所谓ADO.NET是一组用于和数据源进行交互的面向对象类库,就是访问数据库SQL Access 或XML Excel等数据源而已。
访问数据首先就要建立到操作对象的连接,这就是connection对象,通常用的访问SQL Server的叫SqlConnection类,访问Access的叫OleDbConnection.
连接上了,自然就要执行Sql语句来操作表,这时就需要Command对象了,同样的也分SqlCommand(访问SQLServer),OleDbCommand(访问Access或其它).
执行Sql Command的成功后有结果返回,此时需要装结果的容器了,如果是数据表则需要,一是DataReader另一个是DataSet.
DataReader来自于Command.ExecuteReader()返回,而DataSet来自于DataAdapter.Fill(ds, "dstablename")的Fill.同是存放表的.
为何要分两种呢,因为DataSet经过Fill操作后是将表拷贝至内存了,并关闭了连接,而DataReader只是打开联接,数据需要由前至后的一条条读出.在不同的应用环境需要时各有所长,特别是dataset在大量请求负载处理时将会显现出超强的性能优势,采用SqlDataAdapter.Update操作的SqlCommandBuilder来更新删除,修改一些大批量数据,或用SQL语句实现修改多列多项有困难的需求时.
 
使用Sql server数据库时常会用到的在webconfig中定义connectionStrings 如下
 <connectionStrings>
<add name="Northwind" connectionString="Server=localhost;Integrated Security=True;Database=Northwind;Persist Security Info=True" providerName="System.Data.SqlClient" />
</connectionStrings>
引用这个定义则用如下语句
string connectionString =ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;
 
通常使用SqlDataAdapter(),读取数据用GridView显示如下:
string connStr = ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;
SqlConnection myConnection = new SqlConnection(connStr);
myConnection.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers; SELECT * FROM Orders;", myConnection); //注意两个表读
DataSet ds = new DataSet();
da.Fill(ds, "Customers");
CustomersGridView.DataSource = ds.Tables[0];//ds.Tables["Customers"]
CustomersGridView.DataBind();
OrdersGridView.DataSource = ds.Tables[0];//ds.Tables["Customers"]
OrdersGridView.DataBind();
myConnection.Close();
 
通常使用SqlDataReader(),读取数据用GridView显示时如下:
string connStr = ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;
SqlConnection myConnection = new SqlConnection(connStr);
myConnection.Open();
SqlCommand command = new SqlCommand("Select * FROM Customers", myConnection);
SqlDataReader dr=command.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();
myConnection.Close();
 
一个基本的Sql server 采用DataReader()操作增,删,改,读的类,C#代码如下
using System;
 using System.Data;
 using System.Data.SqlClient;
 class SqlCommandDemo
 {
     SqlConnection conn;
 
     public SqlCommandDemo() //构造
     {
         // 建立联接方法
         conn = new SqlConnection("Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI");
     }
 
     // 主程序
     static void Main()
     {
         SqlCommandDemo scd = new SqlCommandDemo();
         Console.WriteLine();
         Console.WriteLine("Categories Before Insert");
         Console.WriteLine("------------------------");
         //ExecuteReader 读出显示
         scd.ReadData();
         // 用ExecuteNonQuery 方法新建插入一条数据
         scd.InsertData();
         Console.WriteLine();
         Console.WriteLine("Categories After Insert");
         Console.WriteLine("------------------------------");
        scd.ReadData(); 
         // use ExecuteNonQuery 更新
         scd.UpdateData();
         Console.WriteLine();
         Console.WriteLine("Categories After Update");
         Console.WriteLine("------------------------------");
         scd.ReadData();
         // use ExecuteNonQuery 删除方法
         scd.DeleteData();
 
         Console.WriteLine();
         Console.WriteLine("Categories After Delete");
         Console.WriteLine("------------------------------");
 
        scd.ReadData();
 
         // use ExecuteScalar 统计方法
         int numberOfRecords = scd.GetNumberOfRecords();
 
         Console.WriteLine();
         Console.WriteLine("Number of Records: {0}", numberOfRecords);
     }
//以下各子方法
     public void ReadData()   //读出
     {
        SqlDataReader rdr = null;
 
         try
         {
             conn.Open();
 
             // 1. 初始化一个SqlCommand对象
             SqlCommand cmd = new SqlCommand("select CategoryName from Categories", conn);
 
             // 2. 读出
             rdr = cmd.ExecuteReader();
 
             // 遍历所有数据输出
             while (rdr.Read())
             {
                 Console.WriteLine(rdr[0]);
             }
         }
         finally
         {
             // 关闭
             if (rdr != null)
             {
                 rdr.Close();
             }
 
             // 且关闭联接
             if (conn != null)
             {
                 conn.Close();
             }
         }
     }
 
     public void InsertData()     //插入
     {
         try
         {
             conn.Open();
 
             // 准备参数
             string insertString = @"insert into Categories (CategoryName, Description)values ('Miscellaneous', 'Whatever doesn''t fit elsewhere')";
 
             // 1. 初始化SqlCommand,并连接conn
             SqlCommand cmd = new SqlCommand(insertString, conn);
             // 2. 执行
             cmd.ExecuteNonQuery();
         }
         finally
         {
             // 关闭
             if (conn != null)
             {
                 conn.Close();
             }
         }
     }
 
     public void UpdateData() //更新
     {
         try
         {
             conn.Open();
             // 参数
             string updateString = @"update Categories set CategoryName = 'Other' where CategoryName = 'Miscellaneous'";
             // 1.初始化
             SqlCommand cmd = new SqlCommand(updateString);
             // 2. 连接conn
             cmd.Connection = conn;
             // 3.执行
             cmd.ExecuteNonQuery();
        }
         finally
         {
             // 关闭
             if (conn != null)
             {
                 conn.Close();
             }
         }
     }
 
     public void DeleteData()   //删除
     {
         try
         {
             conn.Open();
             //准备参数
             string deleteString = @"delete from Categories where CategoryName = 'Other'";
             // 1. command
             SqlCommand cmd = new SqlCommand();
             // 2. 绑定
             cmd.CommandText = deleteString;
             // 3. 连接
             cmd.Connection = conn;
             // 4. 执行
             cmd.ExecuteNonQuery();
         }
         finally
         {
             // 关闭
             if (conn != null)
             {
                 conn.Close();
             }
         }
     }
 
     public int GetNumberOfRecords() //统计
     {
         int count = -1;
         try
         {
             conn.Open();
             // 1. 初始化一个command
             SqlCommand cmd = new SqlCommand("select count(*) from Categories", conn);
             // 2. 执行
             count = (int)cmd.ExecuteScalar();
         }
         finally
         {
            // 关闭
             if (conn != null)
             {
                 conn.Close();
             }
         }
         return count;
     }
 }
 
采用SqlDataAdapter()的SqlCommandBuilder操作增,删,改,读,C#代码如下
private void UseCommandBuilder()
{
 string connectionString = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=LAP800";
 SqlConnection connection = new SqlConnection(connectionString);
 connection.Open();
 try {
   SqlCommand command = new SqlCommand("SELECT * FROM Customers", connection);
   SqlDataAdapter adapter = new SqlDataAdapter(command);
   SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
   Console.WriteLine(builder.GetInsertCommand().CommandText);
   Console.WriteLine(builder.GetUpdateCommand().CommandText);
   Console.WriteLine(builder.GetDeleteCommand().CommandText);
   DataTable table = new DataTable();
   adapter.Fill(table); //读出数据,平常用时会Fill给一个dataset,
   DataRow row = table.NewRow;
   row("CustomerID") = "PAULK";
   row("CompanyName") = "Pauly's Edibles";
   row("ContactName") = "Paul Kimmel";
   row("ContactTitle") = "The Fat Man";
   table.Rows.Add(row);   //插入上面生成的一条数据
   DataRow[] results = table.Select("CustomerID = 'ALFKI'");
   results(0)("Region") = "DE";   //修改数据
   DataRow[] deleteThese = table.Select("CustomerID = 'FARLA'");
   foreach (int row in deleteThese) {
     row.Delete();   //删除数据
   }
  adapter.Update(table);
   table.AcceptChanges();
 
 } catch (Exception ex) {
   Debug.WriteLine(ex.Message);
   throw;
 } finally {
   connection.Close();
 }
 
收集
System.Data.SqlClient.SqlConnection 常用的一些连接字符串(C#代码):
SqlConnection conn = new SqlConnection("Server=(local);Integrated Security=SSPI;database=Pubs");
SqlConnection conn = new SqlConnection("server=(local)//NetSDK;database=pubs;Integrated Security=SSPI");
SqlConnection conn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;");
SqlConnection conn = new SqlConnection(" data source=(local);initial catalog=xr;integrated security=SSPI;persist security info=False;workstation id=XURUI;packet size=4096; ");
SqlConnection conn = new System.Data.SqlClient.SqlConnection("Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer");
SqlConnection conn = new SqlConnection( " uid=sa;pwd=passwords;initial catalog=pubs;data source=127.0.0.1;Connect Timeout=900");
 
System.Data.OleDb.OleDbConnection常用的一些连接字符串(C#代码):
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/MyWeb/81/05/GrocerToGo.mdb");
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source=grocertogo.mdb;");
OleDbConnection conn = new OleDbConnection("Provider=MSDAORA; Data Source=ORACLE8i7;Persist Security Info=False;Integrated Security=yes");
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:/bin/LocalAccess40.mdb");
OleDbConnection conn = new OleDbConnection("Provider=SQLOLEDB;Data Source=MySQLServer;Integrated Security=SSPI");
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值