Vbnet数据库编程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Vb.net数据库编程
.net中一般使用ado.net来和数据库进行连接
datagrid 应用程序中的表现 数据从副本中显示出来 dataset 数据在内存中的副本
将获取的数据填充存放到副本中
Data adapter
获取数据 使用数据库的驱动程序来来连接数据库
Sql server
connection
• 多次调用FILL方法 • 如果要刷新DATASET中的数据,最简单方法 是清空DATASET,然后在调用fill方法.否则 数据表中的记录会又一次被放入dataset中 了.(原来的数据还在)
处理DataSet对象
• 向dataset中已有的数据表添加数据 • Dim row as datarow =ds.tables(“student”).newrow • Row(“name”)=“jichengchao” • Row(“telphon”)=“3511045”
• 缺点 • 必须随时用完随时关闭,否则在试图打开第二个 datareader,就会出现异常. • Datareader会把connection对象锁定 • 数据是只读的 • 游标只能向前,不能后退.如果需要在各个查询结果 之间前后移动,则应该使用DATASET • 优点: • 速度快
• 执行返回单值的查询 • Select count(*) from customers • 使用datareader 或着dataset来获取单值是 可以的,但是有些大材小用. • Command有一专门为此类设计的方 法:executescalar,获取第一行第一列的数据
• • • •
执行一个有返回集的查询 Cmd.executereader 返回一个数据集(对象) Dim rdr as oledbdatareader=cmd.executereader()
• 使用此数据集 • Rdr.read() • 第一次使用此方法会移动游标到结果集的 第一行,以后每次使用时会自动下移一行. • 如果数据集已经结束则此方法会返回FALS • While rdr.read() • rdr.read(“customerid”) • End while
• • • •
开放连接 CΒιβλιοθήκη Baidu.open() 关闭连接 Cn.close()
• .net中默认使用连接池来和数据库连接;而且 连接池默认是打开的,所以在调用CLOSE方 法时,与数据库的实际连接并没有真正被关 闭,而是被传递到池中,以后它就在池中重用 • 如果不想使用连接池 • Oledbconnection ole db services=-4; • Sqlconnection pooling=false;
• 参数化查询 • Select orderid,customerid from orders where customerid=? • ?是参数标记 • 给参数赋值 • Cmd.parameters.add(“@customerid”,oled btype.wchar,5) • Cmd.parameters(0).value=“jcc”
• 可以调用canceledit取消修改
• 删除数据行 • Row.delete即可 • 但是只是相VFP一样,在DATASET中做了一个删 除标记,并没有删除数据,更美有删除数据库中的数 据 • DATASET相当与一个真正数据库中表的副本,所 有的修改,删除,增加,都只是暂时表存,只有当提交 给数据库后才能在数据库中生效 • Da.update(ds)
• 修改dataset中已有的数据表 • Row=ds.tables(“student”).rows.find(“jichen gchao”) • If row is nothing then • else • Row(“name”)=“chenghui” • endif
• Row.beginedit • Row(“name”)=“chenghui” • Row.endedit
• 动态的数据库连接 • 通过给Oledbconnection的connectionstring 属性赋不同的值来动态连接数据库 • 在OLEDBCONNECTION提供的属性中 • database 数据库名称 • Datasource 数据库位置 • State 当前状态是打开或关闭
• Changedatabase方法 • Cn.changedatabase(“northwind”) • Statechange 事件:连接状态改变时需要做 的事情
数据库
• • • •
与数据库连接 数据库查询 使用DataAdapter获取数据 处理DataSet对象
与数据库连接
• 如果是和微软的ACCESS或SQL SERVER连接,使用的 CONNECTION是OleDbConnection,这也是最常使用的连 接对象 • 需要在VB.NET中引用System.Data, System.Data.OleDb 以及System.Data.SqlClient • Imports System.Data • Imports System.Data.Oledb • Imports System.Data.sqlclient
• 根据dataadapter对象的FILL方法分页 • Da.fill(dataset,0,20,”student”) • Da 将选中的数据中前20行放在DATASET 的student表中,其他的数据丢弃(并不表示从 数据库中只找到20行)
• 打开和关闭连接方面是Dataadapter和 command之间的区别最大的区别 • Dim cn as oledbconnection • Dim da as dataadapter • Dim cmd as olecommand • 如果cn没有打开连接,那么当da 要查询数据 库时,它会自动打开连接使用完毕后自动关 闭;cmd则会返回一个异常.
数据库查询
• 使用command对象 • 执行SQL语句 • • • • 创建command: Dim cmd as new oledbcommand cmd.connection=cn cmd.commandtext=“select * from authors”
• 执行无返回行的查询 • Cmd.executenonquery() • 对于update语句来说,有时会修改某些行的 值,有时却不会修改任何行,但是不会发生任 何异常 • Command对象将所影响的行数作为 Cmd.executenonquery()的返回值
• • • •
创建CONNECTION对象 Dim cn as oledbconnection Cn =new oledbconnection() 连接字符串(告诉connection对象使用什么 用户名和密码,连接哪一台计算机上的哪个 数据库) • 连接字符串形式如: • "provider=sqloledb;datasource=127.0.0.1;i nitial catalog=pubs;user id=sa;"
使用DataAdapter获取数据
• dataadapter是专门用来处理脱机数据的 • Dataadapter将查询到的数据放入 DATASET中,然后就不需要连接数据库了 • 实际上DATASET就相当于一个小数据库,不 过是放在内存中的. • Da.fill(dataset)
• Mapping • Datatablemapping和datacolumnmapping • • • • • Dim da as oledbdataadapter Dim tblmap as datatablemapping Dim colmap as datacolumnmapping Tblmap=da.tablemappings.add(“table”,”e”) Colmap=da.columnmappings.add(“lname”,”xing”)
.net中一般使用ado.net来和数据库进行连接
datagrid 应用程序中的表现 数据从副本中显示出来 dataset 数据在内存中的副本
将获取的数据填充存放到副本中
Data adapter
获取数据 使用数据库的驱动程序来来连接数据库
Sql server
connection
• 多次调用FILL方法 • 如果要刷新DATASET中的数据,最简单方法 是清空DATASET,然后在调用fill方法.否则 数据表中的记录会又一次被放入dataset中 了.(原来的数据还在)
处理DataSet对象
• 向dataset中已有的数据表添加数据 • Dim row as datarow =ds.tables(“student”).newrow • Row(“name”)=“jichengchao” • Row(“telphon”)=“3511045”
• 缺点 • 必须随时用完随时关闭,否则在试图打开第二个 datareader,就会出现异常. • Datareader会把connection对象锁定 • 数据是只读的 • 游标只能向前,不能后退.如果需要在各个查询结果 之间前后移动,则应该使用DATASET • 优点: • 速度快
• 执行返回单值的查询 • Select count(*) from customers • 使用datareader 或着dataset来获取单值是 可以的,但是有些大材小用. • Command有一专门为此类设计的方 法:executescalar,获取第一行第一列的数据
• • • •
执行一个有返回集的查询 Cmd.executereader 返回一个数据集(对象) Dim rdr as oledbdatareader=cmd.executereader()
• 使用此数据集 • Rdr.read() • 第一次使用此方法会移动游标到结果集的 第一行,以后每次使用时会自动下移一行. • 如果数据集已经结束则此方法会返回FALS • While rdr.read() • rdr.read(“customerid”) • End while
• • • •
开放连接 CΒιβλιοθήκη Baidu.open() 关闭连接 Cn.close()
• .net中默认使用连接池来和数据库连接;而且 连接池默认是打开的,所以在调用CLOSE方 法时,与数据库的实际连接并没有真正被关 闭,而是被传递到池中,以后它就在池中重用 • 如果不想使用连接池 • Oledbconnection ole db services=-4; • Sqlconnection pooling=false;
• 参数化查询 • Select orderid,customerid from orders where customerid=? • ?是参数标记 • 给参数赋值 • Cmd.parameters.add(“@customerid”,oled btype.wchar,5) • Cmd.parameters(0).value=“jcc”
• 可以调用canceledit取消修改
• 删除数据行 • Row.delete即可 • 但是只是相VFP一样,在DATASET中做了一个删 除标记,并没有删除数据,更美有删除数据库中的数 据 • DATASET相当与一个真正数据库中表的副本,所 有的修改,删除,增加,都只是暂时表存,只有当提交 给数据库后才能在数据库中生效 • Da.update(ds)
• 修改dataset中已有的数据表 • Row=ds.tables(“student”).rows.find(“jichen gchao”) • If row is nothing then • else • Row(“name”)=“chenghui” • endif
• Row.beginedit • Row(“name”)=“chenghui” • Row.endedit
• 动态的数据库连接 • 通过给Oledbconnection的connectionstring 属性赋不同的值来动态连接数据库 • 在OLEDBCONNECTION提供的属性中 • database 数据库名称 • Datasource 数据库位置 • State 当前状态是打开或关闭
• Changedatabase方法 • Cn.changedatabase(“northwind”) • Statechange 事件:连接状态改变时需要做 的事情
数据库
• • • •
与数据库连接 数据库查询 使用DataAdapter获取数据 处理DataSet对象
与数据库连接
• 如果是和微软的ACCESS或SQL SERVER连接,使用的 CONNECTION是OleDbConnection,这也是最常使用的连 接对象 • 需要在VB.NET中引用System.Data, System.Data.OleDb 以及System.Data.SqlClient • Imports System.Data • Imports System.Data.Oledb • Imports System.Data.sqlclient
• 根据dataadapter对象的FILL方法分页 • Da.fill(dataset,0,20,”student”) • Da 将选中的数据中前20行放在DATASET 的student表中,其他的数据丢弃(并不表示从 数据库中只找到20行)
• 打开和关闭连接方面是Dataadapter和 command之间的区别最大的区别 • Dim cn as oledbconnection • Dim da as dataadapter • Dim cmd as olecommand • 如果cn没有打开连接,那么当da 要查询数据 库时,它会自动打开连接使用完毕后自动关 闭;cmd则会返回一个异常.
数据库查询
• 使用command对象 • 执行SQL语句 • • • • 创建command: Dim cmd as new oledbcommand cmd.connection=cn cmd.commandtext=“select * from authors”
• 执行无返回行的查询 • Cmd.executenonquery() • 对于update语句来说,有时会修改某些行的 值,有时却不会修改任何行,但是不会发生任 何异常 • Command对象将所影响的行数作为 Cmd.executenonquery()的返回值
• • • •
创建CONNECTION对象 Dim cn as oledbconnection Cn =new oledbconnection() 连接字符串(告诉connection对象使用什么 用户名和密码,连接哪一台计算机上的哪个 数据库) • 连接字符串形式如: • "provider=sqloledb;datasource=127.0.0.1;i nitial catalog=pubs;user id=sa;"
使用DataAdapter获取数据
• dataadapter是专门用来处理脱机数据的 • Dataadapter将查询到的数据放入 DATASET中,然后就不需要连接数据库了 • 实际上DATASET就相当于一个小数据库,不 过是放在内存中的. • Da.fill(dataset)
• Mapping • Datatablemapping和datacolumnmapping • • • • • Dim da as oledbdataadapter Dim tblmap as datatablemapping Dim colmap as datacolumnmapping Tblmap=da.tablemappings.add(“table”,”e”) Colmap=da.columnmappings.add(“lname”,”xing”)