|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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天就能很熟悉了,我甚感自己的愚钝。更多帖子是向大家请教初学者适合看书。两个多月的时间(当然平常杂事比较多。 |
|