Vbnet数据库编程.ppt
V数据库编程,.net中一般使用来和数据库进行连接,与数据库连接数据库查询使用DataAdapter获取数据处理DataSet对象,与数据库连接,如果是和微软的ACCESS或SQL SERVER连接,使用的CONNECTION是OleDbConnection,这也是最常使用的连接对象需要在VB.NET中引用System.Data,System.Data.OleDb以及System.Data.SqlClientImports System.DataImports System.Data.OledbImports System.Data.sqlclient,创建CONNECTION对象Dim cn as oledbconnectionCn=new oledbconnection()连接字符串(告诉connection对象使用什么用户名和密码,连接哪一台计算机上的哪个数据库)连接字符串形式如:provider=sqloledb;datasource=127.0.0.1;initial catalog=pubs;user id=sa;,开放连接Cn.open()关闭连接Cn.close(),.net中默认使用连接池来和数据库连接;而且连接池默认是打开的,所以在调用CLOSE方法时,与数据库的实际连接并没有真正被关闭,而是被传递到池中,以后它就在池中重用如果不想使用连接池Oledbconnection ole db services=-4;Sqlconnection pooling=false;,动态的数据库连接通过给Oledbconnection的connectionstring属性赋不同的值来动态连接数据库在OLEDBCONNECTION提供的属性中database 数据库名称Datasource 数据库位置State 当前状态是打开或关闭,Changedatabase方法Cn.changedatabase(“northwind”)Statechange 事件:连接状态改变时需要做的事情,数据库查询,使用command对象执行SQL语句创建command:Dim cmd as new oledbcommandcmd.connection=mandtext=“select*from authors”,执行无返回行的查询Cmd.executenonquery()对于update语句来说,有时会修改某些行的值,有时却不会修改任何行,但是不会发生任何异常Command对象将所影响的行数作为Cmd.executenonquery()的返回值,执行一个有返回集的查询Cmd.executereader返回一个数据集(对象)Dim rdr as oledbdatareader=cmd.executereader(),使用此数据集Rdr.read()第一次使用此方法会移动游标到结果集的第一行,以后每次使用时会自动下移一行.如果数据集已经结束则此方法会返回FALSWhile rdr.read()rdr.read(“customerid”)End while,缺点必须随时用完随时关闭,否则在试图打开第二个datareader,就会出现异常.Datareader会把connection对象锁定数据是只读的游标只能向前,不能后退.如果需要在各个查询结果之间前后移动,则应该使用DATASET优点:速度快,执行返回单值的查询Select count(*)from customers使用datareader 或着dataset来获取单值是可以的,但是有些大材小用.Command有一专门为此类设计的方法:executescalar,获取第一行第一列的数据,参数化查询Select orderid,customerid from orders where customerid=?是参数标记给参数赋值Cmd.parameters.add(“customerid”,oledbtype.wchar,5)Cmd.parameters(0).value=“jcc”,使用DataAdapter获取数据,dataadapter是专门用来处理脱机数据的Dataadapter将查询到的数据放入DATASET中,然后就不需要连接数据库了实际上DATASET就相当于一个小数据库,不过是放在内存中的.Da.fill(dataset),MappingDatatablemapping和datacolumnmappingDim da as oledbdataadapterDim tblmap as datatablemappingDim colmap as datacolumnmappingTblmap=da.tablemappings.add(“table”,”e”)Colmap=da.columnmappings.add(“lname”,”xing”),根据dataadapter对象的FILL方法分页Da.fill(dataset,0,20,”student”)Da 将选中的数据中前20行放在DATASET的student表中,其他的数据丢弃(并不表示从数据库中只找到20行),打开和关闭连接方面是Dataadapter和command之间的区别最大的区别Dim cn as oledbconnectionDim da as dataadapterDim cmd as olecommand如果cn没有打开连接,那么当da 要查询数据库时,它会自动打开连接使用完毕后自动关闭;cmd则会返回一个异常.,多次调用FILL方法如果要刷新DATASET中的数据,最简单方法是清空DATASET,然后在调用fill方法.否则数据表中的记录会又一次被放入dataset中了.(原来的数据还在),处理DataSet对象,向dataset中已有的数据表添加数据Dim row as datarow=ds.tables(“student”).newrowRow(“name”)=“jichengchao”Row(“telphon”)=“3511045”,修改dataset中已有的数据表Row=ds.tables(“student”).rows.find(“jichengchao”)If row is nothing thenelseRow(“name”)=“chenghui”endif,Row.begineditRow(“name”)=“chenghui”Row.endedit可以调用canceledit取消修改,删除数据行Row.delete即可但是只是相VFP一样,在DATASET中做了一个删除标记,并没有删除数据,更美有删除数据库中的数据DATASET相当与一个真正数据库中表的副本,所有的修改,删除,增加,都只是暂时表存,只有当提交给数据库后才能在数据库中生效Da.update(ds),