分享
 
 
 

C#下数据库编程(二)

王朝c#·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

前言:

今天是个值得纪念的日子,因为我有幸参加了程序员杂志社举办的第一次读者见面会,见到了平日里想见的各位编辑们,回来上网又发现自己的C#下数据库编程(一)发表在CSDN上自己的专栏文档中,心里更是高兴。毕竟第一次能在CSDN上发表自己文章了,兴奋之情无法用语言形容,于是有一种冲动想继续写完这接下来的C#下数据库编程(二)。如果这次说不透,以后再写三、四,反正说实话,C#数据库编程绝不是一两篇能说透的,我会尽力将我学会的都写出来。OK,继续看吧。

正文:

上次我们留下了些具体问题没有解决,比如:如何向数据库添加一条记录,如何修改或删除一条记录,等等。这些问题相信所有初学C#+ADO.NET编程的人都会遇到,而且开发MIS系统时这些也都是必须要解决的问题。下面我来用几个实例,来说明具体的实现思路和方法。

首先,我们先来添加一条记录。首先要明确一个思想,那就是我在第一篇中说过的,在C#中没有类似Visual Foxpro中的文件式数据库访问技术,如:

USE MyTable

APPEND BLANK

REPLACE MyName WITH “杨扬”

USE

在C#中,一切操作都要OO,即以操纵对象的方式来完成。这个思想一定要贯穿整个C#编程过程中。那么如何来添加记录呢?如果你还记得上篇那幅插图的话,就会记得图中有一个DataSet对象其中包括的DataRow。我在上篇也提到过,DataRow就是DataSet中DataTable对象的一个子对象,代表一个数据行对象。而DataTable对象就是由一些DataRow对象组成的DataRowCollection对象而构成的。我们添加一条记录,其实就是添加一个DataRow对象到已有的DataTable对象的DataRowCollection中。明白了这个思路,我们就来看看具体的代码该如何编制了。

先复习一下以前这段代码,这样我们不会感觉不知所措:

SqlDataAdapter myDataAdapter = new SqlDataAdapter ();

DataSet myDataSet = new DataSet ();

string strCom = "SELECT * FROM myTable";

myDataAdapter.SelectCommand = new SqlCommand (strCom,myConnection);

SqlCommandBuilder myCB = new SqlCommandBuilder (myDataAdapter);

myDataAdapter.Fill (myDataSet,"myTable");

这时我们已经得到了一个填充好的myDataSet,其中有一个DataTable对象叫myTable。然后我们通过DataTable对象的NewRow方法构造一个新的DataRow对象,在完成设定并赋值后,由DataTable.Rows(即DataRowCollection)的Add方法来完成添加。

DataRow myDataRow; //定义一个DataRow

DataTable myDataTable; //定义一个DataTable

myDataTable = myDataSet.Tables["myTable"]; //引用DataSet中的一个DataTable

myDataRow = myDataTable.NewRow(); //调用NewRow方法得到一个DataRow

myDataRow["myName"] = "杨扬"; //将此DataRow中的myName字段置为“杨扬”

myDataTable.Rows.Add(myDataRow); //将此DataRow添加到myDataTable中

怎么样?是不是感觉非常直观,是不是有种很清爽的感觉。的确,OO的设计方法在开始时会有些不适应,但只要你领悟了其中的思想,你就会感觉一切操作都很简单,不用过多的考虑细节。不过要说明的是,你用的上述方法添加完成后,记录并没有进入到真正的数据库中,而只是在DataSet中完成了添加。如果想要在数据库中真正添加,还要应用DataAdapter的Update方法将DataSet回写到数据库中。这种方法虽然没有直接操作文件显得快捷,但却是现在技术发展的趋势和必然要求,因为现在的数据库系统几乎都是面向网络环境的,特别是分布式的系统更是对数据库访问技术提出了更高的要求。以往的那种独享操纵数据库的方式是绝对不能适合的。ADO.NET访问数据库的方法就是数据库连接成功后,将数据库中表信息的子集创建一个DataSet,然后建议断开数据库连接。在完成对数据库的一系列操作后,再将DataSet回写到数据库的相应表中。这种方式有许多优点,比如减少网络通讯压力,便于事务处理,提高访问效率等等,但缺点就是必须多增加一步回写操作。不过我相信与众多优点相比,这点也算不上什么。

接下来,我们来看看修改操作的实现。有了上面添加操作的方法,修改操作我想也就容易多了,即直接对DataTable对象中的某个DataRow对象进行修改。请看下面的代码。

DataRow myDataRow; //定义一个DataRow

DataTable myDataTable; //定义一个DataTable

myDataTable = myDataSet.Tables["myTable"]; //引用DataSet中的一个DataTable

myDataRow = myDataTable.Rows[1]; //得到一个要修改的DataRow

myDataRow["myName"] = "杨扬"; //将此DataRow中的myName字段置为“杨扬”

有了上面的基础,我觉得删除操作读者都可以自己无师自通了。先自己想想该如何做,我马上就告诉大家。说对了,就是应用DataTable对象的DataRow子对象的Delete方法。比如删除第1条记录,代码如下:

DataRow myDataRow; //定义一个DataRow

DataTable myDataTable; //定义一个DataTable

myDataTable = myDataSet.Tables["myTable"]; //引用DataSet中的一个DataTable

myDataRow = myDataTable.Rows[1]; //得到一个要删除的DataRow

myDataRow.Delete();

DataRow的Delete方法不像Visual Foxpro中的DELETE命令,只做一个删除标记,还要配合PACK才能真正删除记录。DataRow的Delete方法是一次性删除,当然只是删除了DataTable中的某条记录,还要Update的。

上面总说要应用Update将DataTable回写到数据库的表中,可具体做法是什么呢?下面代码给出具体的方法。

myDataAdapter.Update(myDataSet,"myTable");

好了,现在可以说您已经学会了C#+ADO.NET数据库编程技术的添加、修改、删除、更新操作了,加上您以前学过的OO设计方法和可视化开发方法,用Visual C#.NET可以编写简单的数据库小程序了,是不是觉得特兴奋。当然仅仅这些操作只能编写一个数据库范例,真正的数据库开发要比这复杂的多。但是什么复杂的事物都是由简单的构成的。下一篇我还要教大家更兴奋的内容——查询操作,以后还会教一些更高级数据库编程。那将是一个更加兴奋的内容,下回见。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有