关于数据连接的ADO Data控件中相关语句的ado recordset update和recordcount 相当于VB.Net的语句的什么呢?

欢迎访问阿里西西WEB开发技术网站!
作者:[转载]&&文章来源:/&&更新时间:
& set conn=New ADODB.Connection& set rs=New adodb.recordset& 本机名称:jszx3-11& server:jszx3-11& database:wzc& uid=sa& pwd=& driver={sql server}& '定义ADO数据库对象& conn.ConnectionString = "driver={SQL Server};" & _& "server=" & ServerName & ";uid=" & UserName & ";& pwd=" & Password & ";database=" & DatabaseName & ""& '连接数据串& Private Sub Command1_Click(Index As Integer)& Dim m As String& Set conn = New ADODB.Connection& Set rs = New ADODB.Recordset& conn.ConnectionString = "Driver={SQL Server};server=JSZX3-11;uid=pwd=;database=wzc"& conn.Open& rs.Open "select 用户名,密码 from login where 用户名='" & Trim(Combo1.Text) & "' And 密码='" & Trim(Text1.Text) & "'", conn, adOpenStatic, adLockReadOnly, adCmdText& If rs.EOF = True And rs.BOF Then& m = MsgBox("请重新登录", vbExclamation)& Text1.Text = ""& Text1.SetFocus& Else& Form1.Hide& Form2.Show& End If& rs.Close& End Sub& Private Sub Command2_Click(Index As Integer)& Form2.Show& End Sub& Private Sub Command3_Click()& Unload Form1& End Sub& Private Sub Form_Load()& Dim t As Integer& Set conn = New ADODB.Connection& Set rs = New ADODB.Recordset& conn.ConnectionString = "Driver={SQL Server};server=JSZX3-11;uid=pwd=;database=wzc"& conn.Open& rs.Open "select 用户名 from login", conn, adOpenStatic, adLockReadOnly, adCmdText& Dim i As String& For t = 0 To Val(rs.RecordCount) - 1& i = Trim(rs.Fields("用户名").Value)& rs.MoveNext& Combo1.AddItem i& Next t& rs.Close& End Sub&&&&用vb编写程序时,对于数据的处理,特别是&来自数据库的数据,常用到类似表格的控件,我在“部件”添加了以下三个&Activex&控件:
&&&DataGrid控件
&&&MSFlexGrid&控件
&&&MSHFlexGrid&控件
&&&虽然参阅了msdn&帮助,感到很生涩!但对这三个控件的用处、异同点不是太了解!
&&&请问,谁能比较通俗的解释一下!
&&&&不胜感激!
回复讨论(解决方案)
请大哥出手啊!!!
Microsoft&Hierarchical&FlexGrid&(MSHFlexGrid)&控件对表格数据进行显示和操作。在对包含字符串和图片的表格进行分类、合并以及格式化时,具有完全的灵活性。当绑定到&Data&控件上时,MSHFlexGrid&所显示的是只读数据。
可以将文本、图片,或者文本和图片,放在MSHFlexGrid&的任意单元中。Row&和&Col&属性指定了MSHFlexGrid&中的当前单元。程序员可以在代码中指定当前单元,也可以在运行时,使用鼠标或者方向键来对其进行修改。Text&属性引用当前单元的内容。
如果单元的文本过长而不能在该单元中显示,而且&WordWrap&属性被设置为&True,那么文本就会换行到同一单元内的下一行。为了显示换行的文本,可能需要增加单元的列宽度(ColWidth&属性)或者行高度(RowHeight&属性)。
可以用&Cols&和&Rows&属性来决定MSHFlexGrid&控件中的列数和行数。
DataGrid说明
该数据识别的DataGrid控件看起来与Grid控件类似。但是,您可以设置DataGrid控件的DataSource属性为一个Data控件,以自动填充该控件并且从Data控件的Recordset对象自动设置其列标头。这个DataGrid控件实际上是一个固定的列集合,每一列的行数都是不确定的。
DataGrid&控件的每一个单元格都可以包含文本值,但不能链接或内嵌对象。可以在代码中指定当前单元格,或者用户可以使用鼠标或箭头键在运行时改变它。通过在单元格中键入或编程的方式,单元格可以交互地编辑。单元格能够被单独地选定或按照行来选定。
如果一个单元格的文本太长,以致于不能在单元格中全部显示,则文本将在同一单元格内折行到下一行。要显示折行的文本,必须增加单元格的Column对象的Width属性和/或DataGrid控件的RowHeight属性。在设计时,可以通过调节列来交互地改变列宽度,或在Column对象的属性页中改变列宽度。
使用DataGrid控件的Columns集合的Count属性和Recordset对象的RecordCount属性,可以决定控件中行和列的数目。DataGrid控件的可包含的行数取决于系统的资源,而列数最多可达32,767列。
选择一个单元格,则ColIndex属性被设置,也就是选择了DataGrid对象的Columns集合中的一个Column对象。Column对象的Text和Value属性引用当前单元格的内容。使用Bookmark属性能够访问当前行的数据,它能够提供对下一级Recordset对象中记录的访问。DataGrid控件中的每一列都有自己的字体、边框、自动换行、和另外一些与其他列无关的能够被设置的属性。在设计时,您可以设置列宽和行高,并且建立对用户不可见的列。您还能阻止用户在运行时改变格式。
MSFlexGrid
文本和图片可以同时或者单独放在&MSFlexGrid&的任何一个单元格中。Row&和&Col&属性指定了当前的&MSFlexGrid&单元格。程序员可以在代码中改变当前单元格,用户可以在运行时使用鼠标或者箭头键改变它。Text&属性提供了当前单元格内容的参考信息。
如果单元格中的文本过长,无法全部显示在单元格的一行中,而且&WordWrap&属性被设置为&True,那么文本将回绕到同一单元格的下一行。如果需要显示被回绕的文本,需要增加单元的列宽(ColWidth&属性)或行高(RowHeight&属性)。
使用&Col&和&Row&属性可以分别确定&MSFlexGrid&中列与行的个数。
注意&&&在应用程序中使用&MSFlexGrid&之前,首先必须将&MSFlxGrd.ocx&文件添加到工程中。如果希望自动地将文件包含在过程之中,请将它放在&Autoload&文件中。在发布应用程序的时候,应该在用户的&Microsoft&Windows&System&目录下安装&MSFlxGrd.ocx&文件。关于如何在工程中添加&ActiveX&控件的详细说明,请参阅《Visual&Basic&程序员指南》中的“标准&ActiveX&控件”。
谢谢!楼主的详细解答!
&&&&我要访问的数据库文件是&access&文件,它在我的系统的位置是固定的,&X;\mysys\mydb.mdb&,也就是说安装盘符可能是&C;&或&D;&,其余路径是固定的&。
&&&&我的问题是对该&库文件&mydb.mdb&中的两个用户表&tab1和tab2&中部分字段要绑定到同一个grid&控件,不知是否可行,要注意什么?
可以用sql的select&*&from&表1&inner&join&表2&on&1=1把两个表连接为一个表,再把记录集绑定到grid控件就可以了
理解3个控件的本质,很简单的话去说
DataGrid控件:不存在真实网格式,只是Recordset的反映,支持绑定,所以别妄想对它进行太多设置。在它上面的操作就是对Recordset的操作
MSFlexGrid&控件:存在真实网格,但是不支持Recordset的绑定,只能把数据一个个读进自身网格,不支持编辑,不能直接对Recordset操作
MSHFlexGrid&控件:MSFlexGrid&控件的加强版,支持绑定
谢谢daisy8675(莫依)&答复!
你的答复,我比较明白了!我很喜欢!
&&&&1.我想用&Recordset&对象把数据读入到&datagrid&控件中,并按需要进行修改,并将对表中数据统计后将结果按规定格式编制业务专用的电码到&另一个textbox&控件中,但不希望在&datagrid&中对数据的操作反映到数据源上(就是不希望改变数据库文件的内容!)!
&&&&这个可行吗?
&&&&2.你所说的&&MSFlexGrid&控件只能把数据一个个读进自身网格&,是指可以用&Recordset&对象把数据一个个读入到&MSFlexGrid&指定的单元格内吧???
&&&&&对于我的问题,是用哪个控件好呢?
问题1:在ado的打开方式上,用批次打开就可。
问题2:看你的能力能驾御哪个就用哪个
请问:daisy8675(莫依)&(
问题1:在ado的打开方式上,用批次打开就可。
是什么意思?能详细解释一下吗?
我也没听过,什么叫批次打开?能详细说明一下吗?
目前还没搞懂!!!ADO Recordset 对象
ADO Recordset 对象
本例演示如何使用 GetRows 方法。
Recordset 对象
ADO Recordset 对象用于容纳一个来自数据库表的记录集。一个 Recordset 对象由记录和列(字段)组成。
在 ADO 中,此对象是最重要且最常用于对数据库的数据进行操作的对象。
set objRecordset=Server.CreateObject(&ADODB.recordset&)
当您首次打开一个 Recordset 时,当前记录指针将指向第一个记录,同时 BOF 和 EOF 属性为 False。如果没有记录,BOF 和 EOF 属性为 True。
Recordset 对象能够支持两种更新类型:
立即更新 - 一旦调用 Update 方法,所有更改被立即写入数据库。
批更新 - provider 将缓存多个更改,然后使用 UpdateBatch 方法把这些更改传送到数据库。
在 ADO,定义了 4 中不同的游标(指针)类型:
动态游标 - 允许您查看其他用户所作的添加、更改和删除
键集游标 - 类似动态游标,不同的是您无法查看有其他用户所做的添加,并且它会防止您访问其他用户已删除的记录。其他用户所做的数据更改仍然是可见的。
静态游标 - 提供记录集的静态副本,可用来查找数据或生成报告。此外,由其他用户所做的添加、更改和删除将是不可见的。当您打开一个客户端 Recordset 对象时,这是唯一被允许的游标类型。
仅向前游标 - 只允许在 Recordset 中向前滚动。此外,由其他用户所做的添加、更改和删除将是不可见的。
可通过 CursorType 属性或 Open 方法中的 CursorType 参数来设置游标的类型。
注释:并非所有的提供者(providers)支持 Recordset 对象的所有方法和属性。
AbsolutePage
设置或返回一个可指定 Recordset 对象中页码的值。
AbsolutePosition
设置或返回一个值,此值可指定 Recordset 对象中当前记录的顺序位置(序号位置)。
ActiveCommand
返回与 Recordset 对象相关联的 Command 对象。
ActiveConnection
如果连接被关闭,设置或返回连接的定义,如果连接打开,设置或返回当前的 Connection 对象。
如果当前的记录位置在第一条记录之前,则返回 true,否则返回 fasle。
设置或返回一个书签。此书签保存当前记录的位置。
设置或返回能够被缓存的记录的数目。
CursorLocation
设置或返回游标服务的位置。
CursorType
设置或返回一个 Recordset 对象的游标类型。
DataMember
设置或返回要从 DataSource 属性所引用的对象中检索的数据成员的名称。
DataSource
指定一个包含要被表示为 Recordset 对象的数据的对象。
返回当前记录的编辑状态。
如果当前记录的位置在最后的记录之后,则返回 true,否则返回 fasle。
返回一个针对 Recordset 对象中数据的过滤器。
设置或返回 Recordset 对象的当前索引的名称。
设置或返回当编辑 Recordset 中的一条记录时,可指定锁定类型的值。
MarshalOptions
设置或返回一个值,此值指定哪些记录被返回服务器。
MaxRecords
设置或返回从一个查询返回 Recordset 对象的的最大记录数目。
返回一个 Recordset 对象中的数据页数。
设置或返回 Recordset 对象的一个单一页面上所允许的最大记录数。
RecordCount
返回一个 Recordset 对象中的记录数目。
设置或返回一个或多个作为 Recordset 排序基准的字段名。
设置一个字符串值,或一个 Command 对象引用,或返回一个字符串值,此值可指示 Recordset 对象的数据源。
返回一个值,此值可描述是否 Recordset 对象是打开、关闭、正在连接、正在执行或正在取回数据。
返回有关批更新或其他大量操作的当前记录的状态。
StayInSync
设置或返回当父记录位置改变时对子记录的引用是否改变。
创建一条新记录。
撤销一次执行。
CancelBatch
撤销一次批更新。
CancelUpdate
撤销对 Recordset 对象的一条记录所做的更改。
创建一个已有 Recordset 的副本。
关闭一个 Recordset。
CompareBookmarks
比较两个书签。
删除一条记录或一组记录。
搜索一个 Recordset 中满足指定某个条件的一条记录。
把多条记录从一个 Recordset 对象中拷贝到一个二维数组中。
将 Recordset 作为字符串返回。
在 Recordset 对象中移动记录指针。
把记录指针移动到第一条记录。
把记录指针移动到最后一条记录。
把记录指针移动到下一条记录。
MovePrevious
把记录指针移动到上一条记录。
NextRecordset
通过执行一系列命令清除当前 Recordset 对象并返回下一个 Recordset。
打开一个数据库元素,此元素可提供对表的记录、查询的结果或保存的 Recordset 的访问。
通过重新执行对象所基于的查询来更新 Recordset 对象中的数据。
从原始数据库刷新当前 Recordset 中的数据。
把 Recordset 对象保存到 file 或 Stream 对象中。
搜索 Recordset 的索引以快速定位与指定的值相匹配的行,并使其成为当前行。
返回一个布尔值,此值可定义 Recordset 对象是否支持特定类型的功能。
保存所有对 Recordset 对象中的一条单一记录所做的更改。
UpdateBatch
把所有 Recordset 中的更改存入数据库。请在批更新模式中使用。
Note: You cannot handle events using VBScript or JScript (only Visual Basic, Visual C++, and Visual J++ languages can handle events).
EndOfRecordset
当试图移动到超过 Recordset 结尾的行时被触发。
FetchComplete
当异步操作中的所有记录均被读取后被触发。
FetchProgress
在异步操作期间被定期地触发,报告已读取多少记录。
FieldChangeComplete
Field 对象的值更改被触发。
MoveComplete
Recordset 中的当前位置更改后被触发。
RecordChangeComplete
一条记录更改之后被触发。
RecordsetChangeComplete
在 Recordset 更改之后被触发。
WillChangeField
在 Field 对象的值更改之前被触发
WillChangeRecord
在一条记录更改之前被触发。
WillChangeRecordset
在 Recordset 更改之前被触发。
在 Recordset 中的当前位置更改之前被触发。
指示在此 Recordset 对象中 Field 对象的数目。
Properties
包含所有 Recordset 对象中的 Property 对象。
Fields 集合的属性
返回 fields 集合中项目的数目。以 0 起始。
countfields = rs.Fields.Count
Item(named_item/number)
返回 fields 集合中的某个指定的项目。
itemfields = rs.Fields.Item(1)
itemfields = rs.Fields.Item(&Name&)
Properties 集合的属性
返回 properties 集合中项目的数目。以 0 起始。
countprop = rs.Properties.Count
Item(named_item/number)
返回 properties 集合中某个指定的项目。
itemprop = rs.Properties.Item(1)
itemprop = rs.Properties.Item(&Name&)博客访问: 580296
博文数量: 82
博客积分: 3046
博客等级: 中校
技术积分: 733
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 系统运维
一、数据库的初始连接
ASP的对象存取数据库方法在ASP中,用来存取数据库的对象统称ADO(Active Data Objects),主要含有三种对象:Connection、Recordset 、CommandConnection:负责打开或连接数据Recordset:负责存取数据表Command:负责对数据库执行行动查询命令二、连接各数据库的驱动程序连接各数据库可以使用驱动程序,也可以使用数据源,不过我建议大家使用驱动程序,因为使用驱动程序非常方便、简单,而使用数据源比较麻烦。
适合数据库类型
"Driver={microsoft access driver(*.mdb)};dbq=*.uid=pwd="
"Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"
"Driver={microsoft odbc for oracle};server=oraclesever.uid=pwd="
MSSQL server
"Driver={sql server};server=database=uid=pwd="
"Driver={microsoft text driver(*. *.csv)};dbq=-----;extensions=asc,csv,tab,Persist SecurityInfo="
Visual Foxpro
"Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.Exclusive=No;"
"Driver={mysql};database=uid=pwd=option=16386;"
适合的数据库类型
"Provider=microsoft.jet.oledb.4.0;data source=your_database_user id=password="
"Provider=OraOLEDB.Odata source=user id=password="
MS SQL Server
"Provider=SQLOLEDB;data source=initial catalog=userid=password="
"Provider=microsof.jet.oledb.4.0;data source=your_Extended Properties'FMT=Delimited'"
用实际的数据库相对路径连接ACCESS:(ODBC)Set conn = Server.CreateObject("ADODB.Connection")conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")
ACCESS:(OLEDB,这个较好)set conn = server.createobject("adodb.connection")conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath("../db/bbs.mdb")
Server.MapPath(path)用法:1.Server.MapPath("/") 应用程序根目录所在的位置 如 C:\Inetpub\wwwroot\2.Server.MapPath("./") 表示所在页面的当前目录 注:等价于Server.MapPath("") 返回 Server.MapPath("")所在页面的物理文件路径3.Server.MapPath("../")表示上一级目录 4.Server.MapPath("~/")表示当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,就是虚拟目录所在的位置 如:C:\Inetpub\wwwroot\Example\注:等效于Server.MapPath("~")。
MS SQL:(ODBC)set conn = Server.CreateObject("ADODB.Connection")conn.open "DSN=MyDSN;UID=PWD=DATABASE=databasename"
FOXPRO:(ODBC)Set Conn = Server.CreateObject("ADODB.connection")ConnStr= "Driver=Microsoft Visual Foxpro D UID=userID;SourceType=DBC;SourceDB=C:\yanhang\database.dbc"Conn.Open ConnStr
ORACLE:(ODBC)set conn=server.createobject("adodb.connection")conn.cursorlocation=adUseClientDSNTemp="Provider=MSDAORA.1;Password=User ID=Data Source=xxx.world"conn.open DSNtemp
MYSQL:(ODBC)strconnection="dsn= driver={mysql odbc 3.51 driver}; server=127.0.0.1;uid=12312;pwd=1231;database=table" set conn = server.createobject("adodb.connection") conn.open strconnection
二、数据集的使用
定义数据集语句:Set rs = Server.CreateObject ("ADODB.Recordset")
Recordset对象方法       Open方法    recordset.Open Source,ActiveConnection,CursorType,LockType,Options       Source(简言之sql 语句)   Recordset对象可以通过Source属性来连接Command对象。Source参数可以是一个Command对象名称、
一段SQL命令、一个指定的数据表名称或是一个Stored Procedure。假如省略这个参数,系统则采用
Recordset对象的Source属性。    ActiveConnection(定义的conn对象)      Recordset对象可以通过ActiveConnection属性来连接Connection对象。这里的
ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字
符串参数。    CursorType   Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括
adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:    ---------------------------------   常数 常数值 说明    ----------------------------------    adOpenForwardOnly 0 缺省值,启动一个只能向前移动的游标(Forward Only)。    adOpenKeyset 1 启动一个Keyset类型的游标。    adOpenDynamic 2 启动一个Dynamic类型的游标。    adOpenStatic 3 启动一个Static类型的游标。
以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。
------------------------------------------------------------- Recordset属性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic ------------------------------------------------------------- AbsolutePage 不支持 不支持 可读写 可读写 AbsolutePosition 不支持 不支持 可读写 可读写 ActiveConnection 可读写 可读写 可读写 可读写 BOF 只读 只读 只读 只读 Bookmark 不支持 不支持 可读写 可读写 CacheSize 可读写 可读写 可读写 可读写 CursorLocation 可读写 可读写 可读写 可读写 CursorType 可读写 可读写 可读写 可读写 EditMode 只读 只读 只读 只读 EOF 只读 只读 只读 只读 Filter 可读写 可读写 可读写 可读写 LockType 可读写 可读写 可读写 可读写 MarshalOptions 可读写 可读写 可读写 可读写 MaxRecords 可读写 可读写 可读写 可读写 PageCount 不支持 不支持 只读 只读 PageSize 可读写 可读写 可读写 可读写 RecordCount 不支持 不支持 只读 只读 Source 可读写 可读写 可读写 可读写 State 只读 只读 只读 只读 Status 只读 只读 只读 只读 AddNew 支持 支持 支持 支持 CancelBatch 支持 支持 支持 支持 CancelUpdate 支持 支持 支持 支持 Clone 不支持 不支持 Close 支持 支持 支持 支持 Delete 支持 支持 支持 支持 GetRows 支持 支持 支持 支持 Move 不支持 支持 支持 支持 MoveFirst 支持 支持 支持 支持 MoveLast 不支持 支持 支持 支持 MoveNext 支持 支持 支持 支持 MovePrevious 不支持 支持 支持 支持 NextRecordset 支持 支持 支持 支持 Open 支持 支持 支持 支持 Requery 支持 支持 支持 支持 Resync 不支持 不支持 支持 支持 Supports 支持 支持 支持 支持 Update 支持 支持 支持 支持 UpdateBatch 支持 支持 支持 支持 -------------------------------------------------------------- 其中NextRecordset方法并不适用于Microsoft Access数据库。
LockType Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以
Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、
adLockOptimistic及adLockBatchOptimistic等,分述如下:
------------------------------------------------------------- 常数 常数值 说明 -------------------------------------------------------------- adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法 adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。 adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行
增、删、改的操作。 adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为
adUdeClientBatch才能对数据进行增、删、改的操作。
简单的理解:
Set rs = Server.CreateObject ("ADODB.Recordset")'定义数据集RS.OPEN SQL,CONN,A,B A: ADOPENFORWARDONLY(=0) 只读,且当前数据记录只能向下移动 ADOPENKEYSET(=1) 只读,当前数据记录可自由移动 ADOPENDYNAMIC(=2) 可读写,当前数据记录可自由移动 ADOPENSTATIC(=3) 可读写,当前数据记录可自由移动,可看到新增记录 B: ADLOCKREADONLY(=1) 缺省锁定类型,记录集是只读的,不能修改记录 ADLOCKPESSIMISTIC(=2) 悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则
立即锁住记录。 ADLOCKOPTIMISTIC(=3) 乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。 ADLOCKBATCHOPTIMISTIC(=4) 批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。 当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。 对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间, 数据在这段时间被更新。这减少了资源的使用。
阅读(843) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 ado.net的sql语句 的文章

 

随机推荐