《Vbnet数据库编程.ppt》由会员分享,可在线阅读,更多相关《Vbnet数据库编程.ppt(25页珍藏版)》请在优知文库上搜索。
1、V数据库编程Sql serverconnectionData adapterdatasetdatagrid数据库使用数据库的驱动程序来来连接数据库获取数据将获取的数据填充存放到副本中数据在内存中的副本数据从副本中显示出来应用程序中的表现.net中一般使用来和数据库进行连接 与数据库连接 数据库查询 使用DataAdapter获取数据 处理DataSet对象与数据库连接 如果是和微软的ACCESS或SQL SERVER连接,使用的CONNECTION是OleDbConnection,这也是最常使用的连接对象 需要在VB.NET中引用System.Data, System.Data.OleDb以及
2、System.Data.SqlClient Imports System.Data Imports System.Data.Oledb Imports System.Data.sqlclient 创建CONNECTION对象 Dim cn as oledbconnection Cn =new oledbconnection() 连接字符串(告诉connection对象使用什么用户名和密码,连接哪一台计算机上的哪个数据库) 连接字符串形式如: provider=sqloledb;datasource=127.0.0.1;initial catalog=pubs;user id=sa; 开放连接
3、Cn.open() 关闭连接 Cn.close() .net中默认使用连接池来和数据库连接;而且连接池默认是打开的,所以在调用CLOSE方法时,与数据库的实际连接并没有真正被关闭,而是被传递到池中,以后它就在池中重用 如果不想使用连接池 Oledbconnection ole db services=-4; Sqlconnection pooling=false; 动态的数据库连接 通过给Oledbconnection的connectionstring属性赋不同的值来动态连接数据库 在OLEDBCONNECTION提供的属性中 database 数据库名称 Datasource 数据库位置 S
4、tate 当前状态是打开或关闭 Changedatabase方法 Cn.changedatabase(“northwind”) Statechange 事件:连接状态改变时需要做的事情数据库查询 使用command对象 执行SQL语句 创建command: Dim cmd as new oledbcommand cmd.connection=cn mandtext=“select * from authors” 执行无返回行的查询 Cmd.executenonquery() 对于update语句来说,有时会修改某些行的值,有时却不会修改任何行,但是不会发生任何异常 Command对象将所影响的
5、行数作为Cmd.executenonquery()的返回值 执行一个有返回集的查询 Cmd.executereader 返回一个数据集(对象) Dim rdr as oledbdatareader=cmd.executereader() 使用此数据集 Rdr.read() 第一次使用此方法会移动游标到结果集的第一行,以后每次使用时会自动下移一行. 如果数据集已经结束则此方法会返回FALS While rdr.read() rdr.read(“customerid”) End while 缺点 必须随时用完随时关闭,否则在试图打开第二个datareader,就会出现异常. Datareader会
6、把connection对象锁定 数据是只读的 游标只能向前,不能后退.如果需要在各个查询结果之间前后移动,则应该使用DATASET 优点: 速度快 执行返回单值的查询 Select count(*) from customers 使用datareader 或着dataset来获取单值是可以的,但是有些大材小用. Command有一专门为此类设计的方法:executescalar,获取第一行第一列的数据 参数化查询 Select orderid,customerid from orders where customerid=? ?是参数标记 给参数赋值 Cmd.parameters.add(“c
7、ustomerid”,oledbtype.wchar,5) Cmd.parameters(0).value=“jcc”使用DataAdapter获取数据 dataadapter是专门用来处理脱机数据的 Dataadapter将查询到的数据放入DATASET中,然后就不需要连接数据库了 实际上DATASET就相当于一个小数据库,不过是放在内存中的. Da.fill(dataset) Mapping Datatablemapping和datacolumnmapping Dim da as oledbdataadapter Dim tblmap as datatablemapping Dim col
8、map as datacolumnmapping Tblmap=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 oledbconnection Dim da
9、as dataadapter Dim cmd as olecommand 如果cn没有打开连接,那么当da 要查询数据库时,它会自动打开连接使用完毕后自动关闭;cmd则会返回一个异常. 多次调用FILL方法 如果要刷新DATASET中的数据,最简单方法是清空DATASET,然后在调用fill方法.否则数据表中的记录会又一次被放入dataset中了.(原来的数据还在)处理DataSet对象 向dataset中已有的数据表添加数据 Dim row as datarow =ds.tables(“student”).newrow Row(“name”)=“jichengchao” Row(“telph
10、on”)=“3511045” 修改dataset中已有的数据表 Row=ds.tables(“student”).rows.find(“jichengchao”) If row is nothing then else Row(“name”)=“chenghui” endif Row.beginedit Row(“name”)=“chenghui” Row.endedit 可以调用canceledit取消修改 删除数据行 Row.delete即可 但是只是相VFP一样,在DATASET中做了一个删除标记,并没有删除数据,更美有删除数据库中的数据 DATASET相当与一个真正数据库中表的副本,所有的修改,删除,增加,都只是暂时表存,只有当提交给数据库后才能在数据库中生效 Da.update(ds)