C#进阶教程(八)

2016-02-19 17:12 5 1 收藏

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的C#进阶教程(八),手机电脑控们准备好了吗?一起看过来吧!

【 tulaoshi.com - 编程语言 】

  大家好,我是武汉华师的SUNWEN,今天Zzz....(快醒醒!啪!..啪!倒,叫我起来也不要用皮鞋来打嘛).现在是五月四号晚上19:33,我好想睡觉.只好打开音乐来提神了!

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  这一节我要讲的是大家非常关心的,肯定也是非常感兴趣的部分.嘿嘿,也是我写教程最拿手的部分----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: // ADOadosample.cs001: using System;002: using System.Data;003: using System.Data.ADO;004:005: public class MainClass006: {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: file://建立记录集,并把Categories这个表填进去014: DataSet myDataSet = new DataSet();015: myDataSet.Tables.Add("Categories");016:017: file://建立ADO实例018: ADOConnection myAccessConn = new ADOConnection(strAccessConn);019: ADODataSetCommand myAccessDataSetCmd = new ADODataSetCommand();020: myAccessDataSetCmd.SelectCommand = new ADOCommand(strAccessSelect,myAccessConn);021:022: myAccessConn.Open();023: try024: {025: myAccessDataSetCmd.FillDataSet(myDataSet,"Categories");026: }027: finally028: {029: myAccessConn.Close();030: }031:032: try033: {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: file://下面的两行程序展示了两种从一个记录集中得到这个数据集中的表格数的方法042: Console.WriteLine("{0} tables in data set", myDataSet.Tables.Count);043: Console.WriteLine("{0} tables in data set", dta.Length);044: file://下面的几行程序说明了如何从一个记录集中依靠表格的名称来取得信息045: Console.WriteLine("{0} rows in Categories table", myDataSet.Tables["Categories"].Rows.Count);046: file://列的信息是自动从数据库中得到的,所以我们可以用以下的代码047: Console.WriteLine("{0} columns in Categories table", myDataSet.Tables["Categories"].Columns.Count);048: DataColumn[] drc = myDataSet.Tables["Categories"].Columns.All;049: int i = 0;050: foreach (DataColumn dc in drc)051: {052: file://打印出列的下标和列的名称和数据类型053: Console.WriteLine("Column name[{0}] is {1}, of type {2}",i++ , dc.ColumnName, dc.DataType);054: }055: DataRow[] dra = myDataSet.Tables["Categories"].Rows.All;056: foreach (DataRow dr in dra)057: {058: file://打印出CategoryID和CategoryName059: Console.WriteLine("CategoryName[{0}] is {1}", dr[0], dr[1]);060: }061: }062: catch (Exception e)063: {064: Console.WriteLine("Oooops. Caught an exception:n{0}", e.Message);065: }066: }067: }

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  看起来,这个例子是有一些复杂的,只怪我例子选的不好,呵呵.不过,细细分析一下,还是可以理解的.我现在说一下这个例子中几个特别的东东.第一就是不象在ASP中,一个命令字符串被须被当作一个命令对象.020做的正是这个事情.注意,在015行有一个myDataSet.Tables.Add("Categories")语句,这并不是把数据库中的Categories这个表填进去,只不过是建一个空表,而025才是真的填充数据.

  这个例子的输出是:

  

Found data table Categories 1 tables in data set 1 tables in data set 4 rows in Categories table 2 columns in Categories table Column name[0] is CategoryID, of type Int32 Column name[1] is CategoryName, of type     System.String CategoryName[1] is Bugbash stuff CategoryName[2] is Appweek Bugs CategoryName[3] is .NET Reports CategoryName[4] is Internal support

  好了,就说到这吧,SUNWEN真是想睡了,什么音乐都不管用了,呵呵.这个例子还真要花大力气才能完全理解.O.K.886!

来源:https://www.tulaoshi.com/n/20160219/1614518.html

延伸阅读
写在前面的话 在写这些文章之前,我对C#一无所知.只从前辈那里听说了一些,说他很像JAVA.因为我这段时间一直在看JAVA,结果什么明堂没看出来(只能怪我太笨:),其实我想还是没有实践的机会),所以就很想换换口味.其实很早就听说了C#,想看一看这个东东,只是上M$的网站一看,.NET的东东要一百多兆呢!看了就怕,何况全部下载下来,要费我一整张...
大家好,我是SUNWEN.今天下午得知,晚上要去当"更夫".呵呵,我们这个学校很是奇怪,要叫我们轮流去通宵巡逻,从晚上10:30到早上6:00.我有一个物理系的朋友,上次在田家炳楼门前找了一个宣传板,垫在下面就睡了一觉,听了笑死我了!哈哈! 现在我想说的是C#中的容器.这是一个非常重要的话题,因为不管你写什么样的程序,你都不能不与容...
大家好,我是武汉华师的SUNWEN.现在是五月二号晚上19:27,由于闲着没事干,所有又写起来了.昨天照了十几张相,待会可以去取了,不知照片中的我是不是很帅,呵呵!现在我耳边正听着2000欧洲杯的曲子,所以比较激动.唉,身为我们院2000级足球队长的我,已经很久没有踢球了! 现在我要说的是C#中的版本处理.其实这是任何一个软件必须要考虑的问题.每个软件都...
终于又到一个白天了,起床,伸个懒腰,又坐到了电脑前面.今天我要向大家讲的是C#的数组(Arrays).C#中的数组和其它一些优秀的语言一样,也是从0开始计的,这从我们以前的例子里可以看出来,也就是说,一个数组的第一个元素是a[0],而不是像VB的a(1).虽然是这样,但是你还是要注意一些区别. 在声明一个数组的时候,方括号必须跟在类型后面,而不能跟在变量...
大家好,我是武汉华师的SUNWEN.我回来了.现在是五月二号下午3:20.我刚从电脑城回来,买了一版D版的MP3.呜,湖北的同学都回去了,尤其是武汉的,跑得特别快,真是可恨.剩下我一个孤零零的福建佬,没事做,只好一个人听音乐,真是惨!幸好这音乐还比较好听,呵呵,其实SUNWEN一点音乐细胞也没有. 言归正传,我现在要说的是库(libraries),和大家一起学习如何用...

经验教程

691

收藏

7
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部