转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
C#学习笔记之五(ADO.net)         ★★★★

C#学习笔记之五(ADO.net)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:568 更新时间:2009/4/23 10:49:45

ADO.net
 //Overview
 Data-->DataReader-->Data Provider--> DataSet
 Data Provider: Connection, Command, DataAdapter
 DataSet: DataRelationCollection,
  DataTable collection(including DataTable))
 DataTable: DataRowCollection, DataColumnColl, ConstrainColl
 DataAdapter: retrieve data from DB, fill tables in DataSet


 //SQL Server .net data provider
 using System.Data
 using System.Data.SqlClient;
 ...
 string strConnection = "server=allan; uid=sa; pwd=; database=northwind";
 string strCommand = "Select productName, unitPrice from Products";
 SqlDataAdapter dataAdapter = new SqlDataAdapter(strCommand, strConnection);
 DataSet dataSet = new DataSet();
 dataAdapter.Fill(dataSet, "Products");
 DataTable dataTable = dataSet.Table[0];
 foreach(DataRow row in dataTable.Rows) {
  lbProducts.Items.Add(row["ProductName"]+"($" +row["UnitProice"] + ")");
 }
 
 //OLEDB Data provider
 using System.Data.OleDb;
 ...
 string strConnection = "provider=Microsoft.JET.OLEDB.4.0; data source=c:\\nwind.mdb";
 OleDbDataAdapter dataAdapter = ...
 
 //DataGrids
 using System.Data.SqlClient
 public class Form1: System.Windows.Forms.Form
 {
  private System.Windows.Forms.DataGrid dgOrders;
  private System.Data.DataSet dataSet;
  private System.Data.SqlClient.Sqlconnection connection;
  private System.Data.SqlClient.SqlCommand;
  private System.Data.SqlClient.SqlDataAdapter dataAdapter;
  
 private void Form1_Load(object sender, System.EventArgs e)
 {
  string connectionString = "server=allan; uid=sa; pwd=;database=northWind";
  connection = new System.Data.SqlClient.Sqlconnection(connectionString);
  connection.Open();
  dataSet = new System.Data.DataSet();
  dataSet.CaseSensitive = true;
  
  command = new System.Data.SqlClient.SqlCommand();
  command.Connection = connection;
  command.CommandText = "Select * from Orders";
  dataAdapter = new System.DataSqlClient.SqlAdapter();
  //DataAdapter has SelectCommand, InsertCommand, UpdaterCommand
  //and DeleteCommand
  dataAdapter.SelectCommand = command;
  dataAdapter.TableMappings.Add("Table", "Orders");
  dataAdapter.Fill(dataSet);
  ProductDataGrid.DataSource = dataSet.Table["Orders"].DefaultView;
  
  //Data Relationships, add code below
  command2 = new System.Data.SqlClient();
  command2.Connection = connection;
  command2.CommandText = "Select * form [order details]";   
  dataAdapter2 = new System.Data.SqlClient.SqlDataAdapter();
  dataAdapter2.SelectCommand = command2;
  dataAdapter2.TableMappings.Add("Table", "Details");
  dataAdatper2.Fill(dataSet);
  
  System.Data.DataRelation dataRelation;
  
  System.Data.DataColumn datacolumn1;
  System.Data.DataColumn datacolumn2;
  dataColumn1 = dataSet.Table["Orders"].Columns["OrderID"];
  dataColumn2 = dataSet.Table["Details"].Columns["OrderID"];
  dataRelation new System.Data.DataRelation("OrdersToDetails", dataColumn1, dataColumn2); 
  dataSet.Relations.Add(dataRelation);
  productDataGrid.dataSource = dataset.DefaultViewManger;
  productDataGrid.DataMember = "Orders"; //display Order table, it has mapping to Order Detail
 
 }  
 }

 //Update Data using ADO.net
 string cmd = "update Products set ...";
 ...
 //creat connection, comand obj
 command.Connection = connection;
 command.CommandText=cmd;
 command.ExecuteNonQuery();
 
 //Transaction 1.SQL Transaction 2. Connection Transaction
 
 //1. SQL Transaction
 //creat connection and command obj
 connnetion.open();
 command.Connection = conntection;
 command.CommandText ="<storedProcedureName>"; //SP has used transaction
 command.CommandType= CommandType.StoredProcedure;
 System.Data.SqlClient.SqlParamenter param;
 param = command.Parameters.Add("@ProductID", SqlDbType.Int);
 param.Direction = ParameterDirection.Input;
 param.Value = txtProductID.Text.Trim();
 ... //pass all parameter need by StoredProcedure
 command.ExecuteNonQuery();
 
 //2. Connection Transaction
 //create connection and command obj
 ...
 System.DataSqlClient.SqlTransaction transaction;
 transaction = connection.BeginTransaction();
 command.Transaction = transaction;
 command.Connection = connection;
 try
 {
 command.CommandText="<SP>"; //this SP has no transaction in it
 command.CommandType = CommandType.StoredProcedure;
 System.DataSqlClient.SqlParameter param;
 ..
 }
 catch (Exception ex)
 { 
  //give Err message
  transaction.Rollback();
 }
 
 //Update DataSet, then update DB at once
 //create connection, command obj, using command.Transaction
 ...
 param = command.Parameters.Add("@QupplierID", SqlDbType.Int);
 param.Direction = ParameterDirection.Input;
 param.SourceColumn = "SupplierID";
 param.SourceVersion = DataRowVersion.Current; //which version
 try
 { //ADO.net will loop each row to update DB
  int rowsUpdated = dataAdapter.Update(dataSet, "Products");
  transaction.Commit();
 }
 catch
 {
  transactrion.Rollback();
 }
 
 
 // Concurrency Update Database
 //compare will original data, avoid conflict
 //Give SQL SP, both Original and Current Data as parameter
 //SQL will write like this: update ... where ... SupplierID = @OldSupplierID

 //original version
 param = command.Parameters.Add("@OldSupplierID", SqlDbtype.Int);
 param.Driection = ParameterDiretion.Input;
 param.SourceColumn ="SupplierID";
 param.SourceVersion = DataRowVersion.Original;
 //current version
 param = command.Parameters.Add("@SupplierID", SqlDbtype.Int);
 param.Driection = ParameterDiretion.Input;
 param.SourceColumn ="SupplierID";
 param.SourceVersion = DataRowVersion.Current;

 //SqlCommandBuilder
 SqlCommandBuilder bldr = new SqlCommandBuilder(dataAdapter);
 dataAdapter.UpdateCommand = bldr.GetUpdateCommand();
 dataAdapter.DeleteCommand = bldr.GetDelteCommand();
 dataAdapter.InsertCommand = bldr.GetInsertCommand();
 try
 {
  //This need not SQL, for bldr has build it for us.
  int rowsUpdated = dataAdapter.Update(dataSet, "Products");
 }   
 catch {}


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台