仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 593|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET教程之初谈ADO.NET中使用DataAdapter举行数据...

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:42:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
数据挖掘有点高深的,主要估计就是使用一些算法提取一些实用的数据。学好数据挖掘的话可以应聘baidu或者google,但是一般人家对算法的要求听高的。你最好还是学点应用型的吧。这种主要是研究型的。ado|数据关于方才进修ADO.NET数据会见手艺的来讲,DataAdapter大概常常会令他们感应利诱,出格是习气于使用托拽DataAdapter控件举行开辟的伴侣,经由过程这一ADO.NET数据会见控件,我们乃至不必誊写一行代码,就可以完成各类必要的数据会见和操纵,但是在享用快速便当的同时,心中却总挂着一丝意犹未尽的感到。DataAdapter控件在面前为我们做了如何的事情?弄分明这一点,关于喜好探根究底的伴侣,不但乐哉悠哉,也有益于我们更它的了解ADO.NET的数据会见机制;同时关于.NET为我们天生的有关数据会见的一年夜堆稀里糊涂的代码,个中良多我们多是用不到的,因而其实是感到不爽,只管在Visual2005下.NET已使用部分类的机制将这些代码很好的埋没了起来。
  在本篇文章中,我将本人手动写代码完成使用DataAdapter举行数据会见操纵,以便能让初学DataAdapter的伴侣分明它面前运转的一些情形。在此,我以SqlServer2005Express数据库作为数据源服务器,因而必要用到的是SqlDataAdapter数据会见工具,关于别的的OleDbDataAdapter等工具与此是相似的,也但愿这篇文章关于初学者能起到举一反三的菲薄感化吧。起首在SqlServer2005Express里创建数据库作为数据源,关于此历程的完成能够经由过程数据界说语句或间接使用可视化界面来完成。我们将经由过程dataGridView控件来显现数据,具体的代码以下所示:
publicpartialclassForm3:Form
{
privateSqlConnectionmyCon;
privateSqlDataAdaptermyAda;
privateSqlCommandmyCmd;
privateSqlCommandBuildermyCbd;
privateDataSetmySet;
publicForm3()
{
InitializeComponent();
myCon=newSqlConnection("DataSource=localhostSQLEXPRESS;InitialCatalog=Shop;PersistSecurityInfo=True;UserID=sa;Password=");
myAda=newSqlDataAdapter();
myCmd=newSqlCommand("select*fromUserinfo",myCon);
myAda.SelectCommand=myCmd;
myCbd=newSqlCommandBuilder(myAda);
mySet=newDataSet();
myAda.TableMappings.Add("UserInfo","UserInfo");
myAda.TableMappings[0].ColumnMappings.Add("UserID","用户");
myAda.TableMappings[0].ColumnMappings.Add("UserName","用户姓名");
myAda.TableMappings[0].ColumnMappings.Add("UserAge","岁数");
myAda.TableMappings[0].ColumnMappings.Add("UserSex","性别");
myAda.TableMappings[0].ColumnMappings.Add("UserAddress","地点");
}
privatevoidForm3_Load(objectsender,EventArgse)
{
try
{
myAda.Fill(mySet,"UserInfo");
}
catch(SqlExceptionex)
{
MessageBox.Show(ex.ToString());
}
finally
{
myCon.Close();
}
dataGridView1.DataSource=mySet.Tables["UserInfo"];
}
privatevoidbt_Update_Click(objectsender,EventArgse)
{
try
{
//将变动的数据更新到数据内外
myAda.Update(mySet.Tables[0].GetChanges());
MessageBox.Show("数据更新乐成!");
//DataTable承受变动,以便为下一次变动作筹办
mySet.Tables[0].AcceptChanges();
}
catch(SqlExceptionex)
{
ex.ToString();
}
}
privatevoidbt_Delete_Click(objectsender,EventArgse)
{
//从DataTable中删除以后选中的行
mySet.Tables[0].Rows[dataGridView1.CurrentRow.Index].Delete();
if(MessageBox.Show("断定要删除以后行数据?","",MessageBoxButtons.OKCancel)==DialogResult.OK)
{
try
{
//将变动的数据更新到数据内外
myAda.Update(mySet.Tables[0].GetChanges());
MessageBox.Show("数据删除乐成!");
//DataTable承受变动,以便为下一次变动作筹办
mySet.Tables[0].AcceptChanges();
}
catch(SqlExceptionex)
{
MessageBox.Show(ex.ToString());
}
}
else
{
//作废对DataTable的变动
mySet.Tables[0].RejectChanges();
}
}
}
Ok了,下面的代码已可以完成对数据库更新和删除的操纵,是否是也很简便,本人写的才叫亲热,才叫熟习。上面来剖析一下。
privateSqlConnectionmyCon;
privateSqlDataAdaptermyAda;
privateSqlCommandmyCmd;
privateSqlCommandBuildermyCbd;
privateDataSetmySet;
看看这几句,这是干甚么的,声了然几个援用范例的变量,让它们援用甚么啊?看一下变量范例的名字就很一览无余,像myCon是个SqlConnection范例,因而一定是用来援用一个毗连范例的,只是到此时现在它们还未真实的援用任何器材而已,就如母亲孕育的孩子,呵呵,还未出生,亲友密友聚到一同,都为这事乐意,先把名字给起好了。接着往下走,
myCon=newSqlConnection("DataSource=localhostSQLEXPRESS;InitialCatalog=Shop;PersistSecurityInfo=True;UserID=sa;Password=");
myAda=newSqlDataAdapter();
myCmd=newSqlCommand("select*fromUserinfo",myCon);
myAda.SelectCommand=myCmd;
myCbd=newSqlCommandBuilder(myAda);
mySet=newDataSet();
这几句这么一写,你的功烈可就年夜了,后面声明的那几个变量所援用的物件如今已出生了,像出生的孩子它们从这一刻起有了可贵的性命。实在呢,经由过程工具箱拖控件的举措基础上能够由到此为止的代码给交换失落了,好比你拖了个SqlConnection控件,设置了毗连信息属性,就即是上面两句代码。只不外现在是咱本人很其实的机关出来滴,而拖个SqlConnection控件的话,是由微软.NET情况给你主动机关的,体例悬殊,效果不异,心境分歧。
privateSqlConnectionmyCon;
myCon=newSqlConnection("DataSource=localhostSQLEXPRESS;InitialCatalog=Shop;PersistSecurityInfo=True;UserID=sa;Password=");
这有关头的一句,有需要说一下
myCbd=newSqlCommandBuilder(myAda);
这又是干甚么滴?这得先说一下SqlCommandBuilder有甚么妙用,我们从字面意义翻译一下,Sql就是Sql,世人名其曰布局化查询言语;Command,名令;Builder,机关,制作,不太好,人家带了个er,学过E文的都晓得,这是个名词,那就译之为机关器,制作者能说得已往。Sql命令机关器,这下恍然分明了,就是用来机关Sql命令的,好比你更新数据库必要一个Update,经由过程这句它就给咱机关出来了。那末Sql命令机关器这个器材又是怎样天生咱必要的Sql语句命令的?它怎样晓得我们要甚么样滴?实在它不晓得,是我们给了它提醒信息,不外它其实是太伶俐了,就这么点提醒信息人家就触类旁通,依据这点提醒揣度出我们的需求。那我们在那里给提醒了,看这句myAda.SelectCommand=myCmd;我们把查询的Sql命令给了出来,给了DataAdaper数据适配器的SelectCommand,而我们又把DataAdaper数据适配器(在这里为myAda)作为参数丢给了SqlCommandBuilder,这下好了,被SqlCommandBuilder抓到了,它就如许轻松加兴奋的,依据抓到的DataAdaper的SelectCommand信息,一骨碌的把别的的Sql操纵命令都给天生出来了。大概有伴侣问了,我不必这个命令机关器天生Sql操纵命令行不?固然是能够了,如果总以为它主动给弄出来的不切合我们的请求,我们完整能够本人写的天真点,像上面如许就能够了:
myAda.DeleteCommand=NewSqlCommand("delete*fromUserInfowhere.....")
经由下面的这一番折腾,已万事俱备,我们的数据适配器已可使用本身的利器SqlCommand对数据库举行操纵了;等等,有点成绩,我们数据内外的字段名字起的都是英文,那末程序运转也是默许英文显现,作为堂堂中国人,这点是不克不及包涵的,那有我们的方块字看着心旷神怡。没有干系,看上面代码:
myAda.TableMappings.Add("UserInfo","UserInfo");
myAda.TableMappings[0].ColumnMappings.Add("UserID","用户");
myAda.TableMappings[0].ColumnMappings.Add("UserName","用户姓名");
myAda.TableMappings[0].ColumnMappings.Add("UserAge","岁数");
myAda.TableMappings[0].ColumnMappings.Add("UserSex","性别");
myAda.TableMappings[0].ColumnMappings.Add("UserAddress","地点");
微软也尊敬我们,经由过程DataAdaper给我们供应了TableMappings属性,使用它就能够把数据库里的光怪陆离的字段名绝不吃力的给转成我们必要的名字,人家这里称作是映照。这下总算差未几了,我们要入手下手举动了,要对数据库动刀了,开首做了那末多筹办,接上去就轻松了。起首是从数据内外查询数据,就是我们习用的Select,myAda.Fill(mySet,"UserInfo");这句就好了,这么复杂?是啊,这里myAda究竟给我们做了甚么?它做的也很多哦,它先要主动的把我们的数据库毗连翻开,就是下面代码中已界说好的谁人毗连工具;完了寻找到myAda数据适配器的SelectCommand命令,依据这个SelectCommand命令往数据内外查询数据,最初把提取到的数据放进了DataSet(在此为mySet)中的一个DataTable(在此为UserInfo)中,比及统统做完后,还会很卖力任的把它本人翻开的毗连给封闭失落,哈哈,很不错的一个家伙哦!查询完成了,更新,删除固然也是不在话下了,我们在dataGridView控件中编纂完数据后,会起首将变更反应到联系关系的DataSet的DataTable中,接上去仍是数据适配器上场,间接挪用它的Update全能办法就能够了,就会把我们的数据的变动写到源数据表中了.这里全能的面前仍旧是DataAdaper的SqlCommand命令,我们此前已为它们设置好了,这里的统统就交给Update办法吧.这里要罗索一下的是mySet.Tables[0].AcceptChanges(),这句很有效,要不你更新一条后,接着再往更新第二条,第三条的话,就会呈现非常,由于一次更新产生后,DataSet会对本次更新挂起,到下一次更新的时分又会反复举行上一次挂起的变动,以是在每次更新后必需挪用AcceptChanges来扫除挂起的变动.
仗着ADO.NET来对数据库举行操纵真的太便利了,办法也良多,纯熟了会发明我怎样写都能完成对数据库的操纵,一种很随便的感到.我这里对DataAdapter捣弄了半天,也只是罗嗦个外相,深切的内容咱再一同探求吧。
在CSDN里搜索一下“初学”两字,竟有三百余篇帖子(也许更多)。有些帖子说,有了asp的基础,只要15天就能很熟悉了,我甚感自己的愚钝。更多帖子是向大家请教初学者适合看书。两个多月的时间(当然平常杂事比较多。
因胸联盟 该用户已被删除
沙发
发表于 2015-1-19 21:20:36 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
深爱那片海 该用户已被删除
板凳
发表于 2015-1-25 22:32:10 | 只看该作者
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
小女巫 该用户已被删除
地板
发表于 2015-2-4 09:09:57 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
再现理想 该用户已被删除
5#
发表于 2015-2-9 21:10:05 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
简单生活 该用户已被删除
6#
发表于 2015-2-27 21:29:58 | 只看该作者
对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
柔情似水 该用户已被删除
7#
发表于 2015-3-9 14:20:45 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
透明 该用户已被删除
8#
发表于 2015-3-16 23:38:20 | 只看该作者
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 15:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表