日期:2013-01-13  浏览次数:20521 次

SUNWEN教程之----C#进阶
(八)
mrfat@china.com  
大家好,我是武汉华师的SUNWEN,今天Zzz....(快醒醒!啪!..啪!倒,叫我起来也不要用皮鞋来打嘛@#$%&*).现在是五月四号晚上19:33,我好想睡觉.只好打开音乐来提神了!

这一节我要讲的是大家非常关心的,肯定也是非常感兴趣的部分.嘿嘿,也是我写教程最拿手的部分----ADO数据库访问.想到这,我就想起我在去年写的"访问数据库"系列文章,嘿嘿!所以呢,如果你觉得对记录集之类的东西比较难理解的话,我推荐你先看一看我的那几篇文章.好了,让我们开始吧!

什么是ADO(ActiveX Data Objects译作ActiveX数据对象),ADO是一个非常简单的思想,一种让你仅用一种方式去访问数据的思想.ADO不算一个新的思想,仅是采用现有的数据访问技术,将其融合起来.如果你不理解ADO,想一想ODBC吧!其实我们在搞ASP的时候,就用到了ADO,还记得吗,那个曾经被我们用过无数次的set conn=Server.CreateObject("ADODB.Connection")吗?是的,就是它.至于ADO的一些概念性的东西,请大家自行查阅资料,不过,其实不了解也没有关系,只把它想象成一个M$给我们的访问数据的工具吧!

OK,下面的例子是以一个M$ ACCESS 2000的数据库为基础的,它的结构如下,表名是Categories,文件名是BugTypes.mdb ,赶快建一个吧:

Category ID Category Name
1 Bugbash stuff
2 Appweek Bugs
3 .NET Reports
4 Internal support

好的,我先把所有的程序都写出来,然后我们来一句一句的品尝:

000: // ADO\adosample.cs
001: using System;
002: using System.Data;
003: using System.Data.ADO;
004:
005: public class MainClass
006: {
007:    public static void Main ()
008:    {
009:       // 设定好连接字符串和选择命令字符串010:       string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BugTypes.MDB";
011:       string strAccessSelect = "SELECT * FROM Categories";
012:
013:       //建立记录集,并把Categories这个表填进去
014:       DataSet myDataSet = new DataSet();
015:       myDataSet.Tables.Add("Categories");
016:       
017:       //建立ADO实例018:       ADOConnection myAccessConn = new ADOConnection(strAccessConn);
019:       ADODataSetCommand myAccessDataSetCmd = new ADODataSetCommand();
020:       myAccessDataSetCmd.SelectCommand = new ADOCommand(strAccessSelect,myAccessConn);
021:
022:       myAccessConn.Open();
023:       try
024:       {
025:          myAccessDataSetCmd.FillDataSet(myDataSet,"Categories");
026:       }
027:       finally
028:       {
029:          myAccessConn.Close();
030:       }
031:
032:       try
033:       {
034:          // 一个记录集可以包含多个表,我们把它们放到一个数组中035:          DataTable[] dta = myDataSet.Tables.All;
036:          foreach (DataTable dt in dta)
037:          {
038:             Console.WriteLine("Found data table {0}", dt.TableName);
039:          }
040:          
041:          //下面的两行程序展示了两种从一个记录集中得到这个数据集中的表格数的方法
042:          Console.WriteLine("{0} tables in data set", myDataSet.Tables.Count);
043:          Console.WriteLine("{0} tables in data set", dta.Length);
044: