VB使用ADODB操作数据库的常用方法
VB使用ADODB操作数据库

VB使用ADODB操作数据库Dim conn As New ADODB.Connection ’创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行Dim rs As ADODB.Recordset ’创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用Dim CnStr As String, Sql As String ’创建两个字符串变量分别存放两个集合的SQL语句代码段1、装载数据库(不属于Recordset集合)=============Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$’以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码FileName = App.Path & "\’数据库名’"DbIp = "数据库地址"DbName = "数据库名"DbUser = "数据操作员用户名"DbPw = "操作员密码"’以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量’1)连接Access数据库:’-------------------CnStr = "PROVIDER=microsoft.jet.oledb.3.51;persist security info =false;data source=" & FileNa me & ";Jet OLEDB:Database Password=" & DbPw’2)连接Oracle数据库:’-------------------CnStr = "PROVIDER=MSDAORA.1;Password=" & DbPw & ";User ID=" & DbUser & ";Data S ource=" & FileName & ";Persist Security Info=True"’其中:’PASSWORD:密码’User ID: 用户号’Data Source: 数据库名’Persist Security Info:’Provider:’3)连接VF的DBF库:’----------------CnStr = "PROVIDER=MSDASQL.1;Persist Security Info=False;Driver={Microsoft Visual FoxPro Driver};UID=" & DbUser & ";SourceDB=" & FileName &";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;"’4)连接SQL的数据库’------------------CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=" & DbUser & ";pwd=" & DbPw & ";DRIVER=SQL Server;DATABASE=" & DbName & ";WSID=GQSOFT;SERVER= " &DbIP’也可以使用这段简易代码 CnStr = "Provider=SQLOLEDB;Data Source=" & DbIp & ";DATABASE=" & DbName & ";U ID=" & DbUser & ";pwd=" & DbPwConn.Open cnstr ’使用 Connection 集合的 Open 方法与数据库建立连接2、Recordset集合的常用方法==========================’1)打开一个表’------------Sql = "select * from 表名" ’SQL查询语句Set rs = New ADODB.Recordset ’新建一个实例rs.Open Sql, conn ’使用 Open 方法打开数据库中的一个表’注意,这种打开方式只能使用 rs.MoveNext (即,向后移动行坐标)而不能像其他方向,并且不能修改数据内容’’rs.Open Sql, conn,1 ’虽然只加了个“1”,但这种方法可以向任何方向移动行坐标。
VBA中数据库操作的实用技巧

VBA中数据库操作的实用技巧VBA(Visual Basic for Applications)是一种广泛应用在Microsoft Office中的编程语言。
在数据处理和管理方面,VBA提供了丰富的功能和灵活性。
本文将介绍一些VBA 中数据库操作的实用技巧,帮助您更高效地处理和管理数据。
1. 连接数据库与数据库进行交互的第一步就是建立连接。
VBA中可以使用ADO(ActiveX Data Objects)来连接各种类型的数据库,如Access、SQL Server等。
使用连接字符串可以指定数据库的位置和其他相关参数。
以下是连接Access数据库的示例代码:```Dim conn As ADODB.ConnectionDim strConn As StringstrConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\mydatabase.accdb;"Set conn = New ADODB.Connectionconn.Open strConn' 使用数据库连接进行操作conn.CloseSet conn = Nothing```2. 执行查询在连接数据库后,您可以使用VBA执行各种查询操作。
通过使用执行器对象(如ADODB.Recordset)和SQL语句,您可以从数据库中检索和筛选数据。
以下是执行查询的示例代码:```Dim conn As ADODB.ConnectionDim rs As ADODB.RecordsetDim strSQL As String' 建立连接(省略连接代码)strSQL = "SELECT * FROM customers WHERE country='USA';"Set rs = conn.Execute(strSQL)' 处理查询结果Do Until rs.EOF' 处理每一行数据rs.MoveNextLoop' 释放资源rs.CloseSet rs = Nothing```3. 插入、更新和删除数据除了查询数据,VBA还可以用于插入、更新和删除数据库中的数据。
VB中对数据库的操作

VB中对数据库的操作''数据库操作(SmDbCtrl)'Option ExplicitPublic DbStyle As StringDim CT As SmDataDiap''====================================== ================================== '创建一个SQLSERVER定形连接(连接到SQL)'函数名:CreateShape'参数: P_Cnn ADODB连接,ServerName 服务器名,DBname 数据库名,UserID 登录用户名,UPw 登录密码,Timerout 连接超时'返回值:TRUE 连接成功.FALSE 连接失败.'例: CreateShape P_Cnn,"CJH","cjherp001","sa","123",15'====================================== ==================================Public Function CreateShape(ByRef P_Cnn As ADODB.Connection, _ServerName As String, _DbName As String, _UserID As String, _UPw As String, _Optional Timerout As Long = 15) As BooleanDim ReturnVal As BooleanDim ConnStr As StringErr.ClearOn Error Resume NextConnStr = "Provider=MSDataShape;Data Provider=SQLOLEDB.1;Password=" & UPw & ";Persist Security Info=True;User ID=" & UserID & _";Initial Catalog=" & DbName & ";Data Source=" & ServerNameP_Cnn.ConnectionString = ConnStrP_Cnn.ConnectionTimeout = TimeroutP_/doc/9c5451052.html,mandTimeou t = TimeroutP_Cnn.OpenDoEventsIf Err.Number = 0 ThenDbStyle = "SQL"ReturnVal = TrueElseErr.ClearDbStyle = ""ReturnVal = FalseEnd IfCreateShape = ReturnValErr.ClearEnd Function'====================================== ================================== '创建一个连接(连接到SQL)'函数名:CreateSqlConn'参数: P_Cnn ADODB连接,ServerName 服务器名,DBname 数据库名,UserID 登录用户名,UPw 登录密码,Timerout 连接超时'返回值:TRUE 连接成功.FALSE 连接失败.'例: CreateSqlConn p_cnn,"CJH","cjherp001","sa","123",15'====================================== ================================== Public Function CreateSqlConn(ByRef P_Cnn As ADODB.Connection, _ServerName As String, _DbName As String, _UserID As String, _UPw As String, _Optional Timerout As Long = 15) As BooleanDim ReturnVal As BooleanErr.ClearOn Error Resume NextIf P_Cnn.State = adStateOpen And Not IsEmpty(adStateOpen) ThenP_Cnn.CloseEnd IfP_Cnn.Provider = "MSDASQL.1"P_Cnn.ConnectionString = "Driver={SQL Server};Server=" & ServerName & ";DataBase=" & DbName & ";Uid=" & UserID &";Pwd=" & UPw & ";APP=" & App.Path & ";WSID=" & UserID & ";Connect Timeout=" & Timerout & ";"P_Cnn.ConnectionTimeout = TimeroutP_/doc/9c5451052.html,mandTimeou t = TimeroutP_Cnn.OpenDoEventsIf Err.Number = 0 ThenDbStyle = "SQL"ReturnVal = TrueElseErr.ClearDbStyle = ""ReturnVal = FalseEnd IfCreateSqlConn = ReturnValErr.ClearEnd Function''====================================== ================================== '创建一个连接(连接到ACCESS)'函数名:CreateMdbConn'参数: MdbCnn ADODB连接,MdbPath ACCESS数据库路径,Provider JET引擎版本,UserID 登录用户名,UserWord 登录密码'返回值:TRUE 连接成功.FALSE 连接失败.'例: CreateMdbConn p_cnn,"C:\DEMO.MDB","sa","123"'====================================== ==================================Public Function CreateMdbConn(ByRef MdbCnn As ADODB.Connection, _MdbPath As String, _Optional Provider = "Microsoft.Jet.OLEDB.4.0;", _Optional UserID As String = "admin", _Optional UserWord As String = "") As BooleanDim ConStr As StringErr.ClearOn Error Resume NextIf MdbCnn.State = adStateOpen And Not IsEmpty(adStateOpen) ThenMdbCnn.CloseEnd If'/------------------------------------------------------------------ConStr = "Provider=" & Provider & _"Data Source=" & MdbPath & ";" & _"Jet OLEDB:Database Password=" & UserWord & ";" & _"User ID=" & UserID & ";"MdbCnn.ConnectionString = ConStrMdbCnn.OpenDoEventsIf Err.Number = 0 ThenDbStyle = "MDB"CreateMdbConn = TrueElseErr.ClearDbStyle = ""CreateMdbConn = FalseEnd IfErr.ClearEnd Function'====================================== ==============================='创建一个连接(连接到其它数据库类型)'函数名:CreateOtherConn'参数: OtherCnn ADODB连接,FilePath 数据库路径,UserName 登录用户名,PassWord 登录密码,DbType SmDbType枚举数据库类型'返回值:TRUE 连接成功.FALSE 连接失败.'例:'CreateOtherConn Cnn, "E:\CjhLx\dbf", , , FoxPro'StrSql = "select * from [employee.dbf]"'Set Rs = RsOpen(Cnn, StrSql)'Set DataGrid1.DataSource = Rs'====================================== ===============================Public Function CreateOtherConn(ByRef OtherCnn As ADODB.Connection, _FilePath As String, _Optional UserName As String = "admin", _Optional PassWord As String = "", _Optional DbType As SmDbType = Access) As BooleanDim ConnStr As StringDim DriveName(5) As StringDim tDbType(5) As StringDim UserPwd(5) As StringErr.Clear'/驱动程序DriveName(1) = "{Microsoft Access Driver (*.mdb)}"DriveName(2) = "{Microsoft Excel Driver (*.xls)}"DriveName(3) = "{Microsoft Text Driver (*.txt; *.csv)}"DriveName(4) = "{Microsoft Visual FoxPro Driver};SourceType=DBF"DriveName(5) = "{Microsoft dBase Driver (*.dbf)}"'/类型tDbType(1) = "MDB"tDbType(2) = "XLS"tDbType(3) = "TXT"tDbType(4) = "FDB"tDbType(5) = "DDB"'/用户名和密码.UserPwd(1) = "Uid=" & UserName & ";Pwd=" & PassWord & ";"UserPwd(2) = "Uid=" & UserName & ";Pwd=" & PassWord & ";"UserPwd(3) = ""UserPwd(4) = "Uid=" & UserName & ";Pwd=" & PassWord & ";"UserPwd(5) = "Uid=" & UserName & ";Pwd=" & PassWord & ";"On Error Resume NextIf OtherCnn.State = adStateOpen And Not IsEmpty(adStateOpen) ThenOtherCnn.CloseEnd IfConnStr = "Provider=MSDASQL.1;Persist Security Info=False;DRIVER=" & DriveName(DbType) & ";" & UserPwd(DbType) & "DBQ=" & FilePathOtherCnn.ConnectionString = ConnStrOtherCnn.OpenDoEventsIf Err.Number = 0 ThenDbStyle = tDbType(DbType)CreateOtherConn = TrueElseErr.ClearDbStyle = ""CreateOtherConn = FalseEnd IfErr.ClearEnd Function'====================================== =================================== '打开一个记录集'函数名:RsOpen'参数: P_Cnn ADODB连接,StrSql SQL查询语句,SetNothing 非连接方式(TRUE默认).连接方式(FALSE)'返回值:记录集'例: RsOpen P_CNN,"SELECT ACHGOODS.* FROM ACHGOODS WHERE GDSID='001''====================================== =================================== Public Function RsOpen(ByRef P_Cnn As ADODB.Connection, _StrSql As String, _Optional SetConnect As Boolean = True) As ADODB.RecordsetDim Rs As New ADODB.RecordsetErr.ClearOn Error Resume NextIf P_Cnn.State <> 1 Then P_Cnn.OpenIf SetConnect Then '使用非连接Rs.CursorLocation = adUseClient '使用客户端游标Rs.LockType = adLockBatchOptimistic '开放式批更新Rs.CursorType = adOpenKeyset '键集游标Else '使用连接(主要用于更新二进制字段)Rs.CursorLocation = adUseClientRs.CursorType = adOpenKeysetRs.LockType = adLockOptimistic '记录锁定End IfRs.Open StrSql, P_Cnn '执行SQLIf SetConnect Then Set Rs.ActiveConnection = Nothing '设置非连接If Err.Number = 0 ThenSet RsOpen = Rs.CloneElseSet RsOpen = NothingEnd IfRs.CloseSet Rs = NothingErr.ClearEnd Function'//执行一条SQL语句Public Function ExecSql(ByRef P_Cnn As ADODB.Connection, _StrSql As String) As BooleanErr.ClearIf P_Cnn.State <> 1 Then P_Cnn.OpenP_Cnn.Execute StrSqlExecSql = (Err.Number = 0)Err.ClearEnd Function''======================================================================== '建立数据库'函数名:CreateDataBase'参数: ServerName 服务器名,UserID 用户名(SA),Pwd 登录密码,DataBasName 建立的数据库名,DataBasPath 库文件目录的绝对路径'返回值:无'例: CreateDataBase "CJH","SA","123","CJHERP001","C:\DB"'====================================== ================================== Public Function CreateDataBase(ServerName As String, _UserID As String, _Pwd As String, _DataBasName As String, _DataBasPath As String) As BooleanDim A As Long, LeftName As StringDim DbC As New ADODB.ConnectionDim CreateBasSql As StringDim BagTrFlag As BooleanErr.ClearIf CreateSqlConn(DbC, ServerName, "Master", UserID, Pwd) ThenIf Right$(DataBasPath, 1) <> "\" Then DataBasPath = DataBasPath & "\"On Error GoTo Errhan:DataBasPath = Trim$(DataBasPath)If Len(DataBasPath) < 2 Then Exit FunctionIf Dir$(Left$(DataBasPath, 2), vbDirectory) = "" Then Beep: Exit Function '根目录是否存在'/---------------------------------------------------------If Right$(DataBasPath, 1) <> "\" Then DataBasPath = DataBasPath & "\"For A = 1 To Len(DataBasPath)If Mid$(DataBasPath, A, 1) = "\" ThenLeftName = Left$(DataBasPath, A)'/如果目录不存在,则先建立If Dir$(LeftName, vbDirectory) = "" Then MkDir LeftName: DoEventsEnd IfNextErr.ClearDbC.BeginTrans'/---------------------------------------------------------CreateBasSql = " CREATE DATABASE " & DataBasName & " ON (NAME=" & DataBasName & ",FILENAME='" & DataBasPath & DataBasName & ".mdf', SIZE=20,FILEGROWTH=4) " & _ " LOG ON (NAME=" & DataBasName & "Log" & ",FILENAME='" & DataBasPath & DataBasName & "Log.ldf',SIZE=20,FILEGROWTH=0)"DbC.Execute CreateBasSql/doc/9c5451052.html,mitTransEnd IfErrhan:If Err.Number <> 0 Then DbC.RollbackTransCreateDataBase = (Err.Number = 0)DbC.CloseSet DbC = NothingErr.ClearEnd Function''建立数据表'函数名:CreageDbT ab'参数: P_Cnn ADO连接,CreateTableSql 建表字符串'返回值:无'例:CreateDbTab P_CNN,CreateTabStrPublic Function CreateDbTab(ByRef P_Cnn As ADODB.Connection, _CreateTableSql As String) As BooleanErr.ClearOn Error Resume NextIf P_Cnn.State <> 1 Then P_Cnn.OpenP_Cnn.BeginTransP_Cnn.Execute CreateTableSqlP_/doc/9c5451052.html,mitTransCreateDbTab = (Err.Number = 0)Err.ClearEnd Function''得到服务器上所有的数据库名'函数名:GetAllDatabases'参数: ServerName 服务器名,UserID 登录用户名(SA),Pwd 登录密码'返回值:数据库名的字符串数组'例: GetAllDatabases "CJH","SA","123"Public Function GetAllDatabases(ServerName As String, _UserID As String, _Pwd As String, _Optional strDriver As String = "SQL Server") As String()Dim PCnn As New ADODB.ConnectionDim RsSchema As New ADODB.RecordsetDim ConnStr As StringDim ReturnVal() As StringDim ReID As LongErr.ClearOn Error Resume NextConnStr = "Driver={" & strDriver & "};"ConnStr = ConnStr & "Server=" & ServerName & ";"ConnStr = ConnStr & "uid=" & UserID & ";pwd=" & Pwd & ";"PCnn.ConnectionString = ConnStrPCnn.Open: ReID = 0Set RsSchema = PCnn.OpenSchema(adSchemaCatalogs)Do Until RsSchema.EOFReID = ReID + 1ReDim Preserve ReturnVal(ReID - 1)ReturnVal(ReID - 1) = RsSchema!Catalog_NameRsSchema.MoveNextLoopIf PCnn.State = adStateOpen And Not IsEmpty(adStateOpen) ThenPCnn.CloseEnd IfGetAllDatabases = ReturnValErr.ClearEnd Function''取某数据库下的数据表'函数名:GetDbTabS'参数: P_Cnn ADO连接'返回值:包含数据表的字符串数组'例: TabArr=GetDbTabS(P_CNN)Public Function GetDbTabs(ByRef P_Cnn As ADODB.Connection) As String()Dim RstSchema As ADODB.RecordsetDim strCnn As StringDim ReturnVal() As StringDim ReID As LongErr.ClearOn Error Resume NextIf P_Cnn.State <> 1 Then P_Cnn.OpenSet RstSchema = P_Cnn.OpenSchema(adSchemaTables)ReID = 0Do Until RstSchema.EOFIf UCase$(Left$(RstSchema.Fields("TABLE_TYPE"), 3)) <> "SYS" ThenReID = ReID + 1ReDim Preserve ReturnVal(ReID - 1)ReturnVal(ReID - 1) = RstSchema.Fields("TABLE_NAME") ' & ":" & RstSchema!TABLE_TYPEEnd IfRstSchema.MoveNextLoopRstSchema.CloseSet RstSchema = NothingGetDbTabs = ReturnValErr.ClearEnd Function'====================================== ====================================== '取临时表名'函数名:GetTmpName'参数:'返回值:一个唯一的临时表名'例: TmpName=GetTmpName()'(注:临时表名="#TmpTal" & 累加数 & 毫秒数)'====================================== ====================================== Public Function GetTmpName(Optional UserName As String= "") As StringDim ReturnVal As StringDim TimVal As StringStatic K As LongErr.ClearOn Error Resume NextK = K + 1If K >= 2147483645# Then K = 0 '累加数TimVal = timeGetTime() '毫秒数ReturnVal = "#" & "TmpTal" & UserName & TimVal & CT.ToStr(K)GetTmpName = IIf(Err.Number = 0, ReturnVal, "")Err.ClearEnd Function''====================================== ================================='对表格或记录集以 INSERT INTO 保存.'函数名:GetInsertIntoSql'参数: P_Cnn ADO连接,mRs 记录集,DateTabName 目标数据表名'返回值:SQL语句'例: InsertIntoDB P_CNN,RS,"ACHGOODS"'====================================== =================================Public Function InsertIntoDB(ByRef P_Cnn As ADODB.Connection, _DateTabName As String, _ByRef MRs As ADODB.Recordset) As BooleanDim StrSql As StringDim TabFied() As SmFiedArrtr '数据库字段Dim SaveFied() As SmFiedArrtr '表格与数据库同时存在的字段Dim SaveID As LongDim AddSave As BooleanDim AddFile As SmFiedArrtrDim FileCon As StringDim FldVal As StringDim TmpVal As VariantDim FldType As LongDim A As Long, B As Long, I As LongDim FldValColl As New Collection'/--------------------------------------------------------------------------------------Err.ClearOn Error Resume NextIf (MRs.EOF And MRs.BOF) Then Exit FunctionErase TabFiedIf P_Cnn.State <> 1 Then P_Cnn.OpenTabFied = GetTabFldAttrib(P_Cnn, DateTabName) '取数据库字段If UBound(TabFied, 1) > 0 ThenSaveID = 0: AddSave = FalseFor A = 0 To MRs.Fields.Count - 1For B = 0 To UBound(TabFied, 1)If UCase$(TabFied(B).FieldName) =UCase$(MRs.Fields(A).Name) Then'处理重复的字段名.Err.ClearFldValColl.Add TabFied(B), "_" & UCase$(TabFied(B).FieldName)If Err.Number <> 457 ThenSaveID = SaveID + 1ReDim Preserve SaveFied(SaveID - 1)SaveFied(SaveID - 1) = TabFied(B)End IfExit ForEnd IfNextNext'/---------------------------------------------------------------------------------------'/保存字段列表For A = 0 To UBound(SaveFied, 1) '字段列表If SaveFied(A).FieldType <> 205 ThenFileCon = FileCon & "[" & SaveFied(A).FieldName & "],"End IfNext AFileCon = Left$(FileCon, Len(FileCon) - 1)MRs.MoveFirstWhile Not MRs.EOFFldVal = ""For I = 0 To UBound(SaveFied, 1)FldType = SaveFied(I).FieldType '字段类型If FldType <> 205 Then '将IMAGE字段排除TmpVal = CT.ToStr(MRs.Fields(SaveFied(I).FieldName)) '字段值If Len(TmpVal) = 0 Then '对空或NULL的处理Select Case FldTypeCase 2, 3, 4, 5, 6, 17, 131 '数值类型If SaveFied(I).FieldIsNull <> 0 Then '可接受NULLFldVal = FldVal & "NULL,"ElseFldVal = FldVal & "0,"End IfCase 135 '日期If SaveFied(I).FieldIsNull <> 0 Then '可接受NULLFldVal = FldVal & "NULL,"ElseIf DbStyle = "MDB" ThenFldVal = FldVal & "#" & Now() & "#,"ElseFldVal = FldVal & "'" & Now() & "',"End IfEnd IfCase Else '其它类型If SaveFied(I).FieldIsNull <> 0 ThenFldVal = FldVal & "NULL,"ElseFldVal = FldVal & "'',"End IfEnd SelectElseSelect Case FldTypeCase 2, 3, 4, 5, 6, 17, 131 '数值类型FldVal = FldVal & "" & TmpVal & ","Case 135If DbStyle = "MDB" ThenFldVal = FldVal & "#" & TmpVal & "#,"ElseFldVal = FldVal & "'" & TmpVal & "',"End IfCase Else '其它类型FldVal = FldVal & "'" & Replace(TmpVal, "'", "''") & "',"End SelectEnd IfEnd IfNextFldVal = Left$(FldVal, Len(FldVal) - 1)StrSql = "INSERT INTO [" & DateTabName & "] (" & FileCon & ") VALUES (" & FldVal & ")"P_Cnn.Execute StrSqlMRs.MoveNextWendEnd IfSet FldValColl = NothingInsertIntoDB = (Err.Number = 0)Err.ClearEnd Function''对表格或记录集以 UPDATE 保存.'函数名:GetUpdataSql'参数: P_Cnn ADO连接,mRs 记录集,DateTabName 目标数据表名,WhereStr 更新条件'返回值:SQL语句'例: UpdataDB P_CNN,RS,"ACHGOODS","WHERE GDSID='001'"Public Function UpdataDB(ByRef P_Cnn As ADODB.Connection, _DateTabName As String, _ByRef MRs As ADODB.Recordset, _WhereStr As String) As BooleanDim StrSql As StringDim TabFied() As SmFiedArrtr '数据库字段Dim SaveFied() As SmFiedArrtr '表格与数据库同时存在的字段Dim SaveID As LongDim AddSave As BooleanDim AddFile As SmFiedArrtrDim FileCon As StringDim FldVal As StringDim TmpVal As VariantDim FldType As LongDim A As Long, B As Long, I As Long'/----------------------------------------------------------------------------------------Err.ClearOn Error Resume Next'If MRs.EOF And MRs.BOF Then Exit FunctionErase TabFiedIf P_Cnn.State <> 1 Then P_Cnn.OpenTabFied = GetTabFldAttrib(P_Cnn, DateTabName) '取数据库字段If UBound(TabFied, 1) > 0 ThenSaveID = 0For A = 0 To MRs.Fields.Count - 1For B = 0 To UBound(TabFied, 1)If UCase$(TabFied(B).FieldName) = UCase$(MRs.Fields(A).Name) ThenSaveID = SaveID + 1ReDim Preserve SaveFied(SaveID - 1)SaveFied(SaveID - 1) = TabFied(B)Exit For '找到数据库与记录集中相同的值,跳出循环.End IfNextNext'/--------------------------------------------------------------------------------------MRs.MoveFirstWhile Not MRs.EOFFldVal = ""For I = 0 To UBound(SaveFied, 1)FldType = SaveFied(I).FieldType '字段类型If FldType <> 205 Then '将IMAGE字段排除TmpVal = CT.ToStr(MRs.Fields(SaveFied(I).FieldName)) '字段值If Len(TmpVal) = 0 Then '对空或NULL的处理Select Case FldTypeCase 2, 3, 4, 5, 6, 17, 131 '数值类型If SaveFied(I).FieldIsNull <> 0 Then '可按受NULLFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=NULL"ElseFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=0"End IfCase 135 '日期时间If SaveFied(I).FieldIsNull <> 0 Then '可接受NULLFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=NULL"ElseIf DbStyle = "MDB" ThenFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=#" & Now() & "#"ElseFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]='" & Now() & "'"End IfEnd IfCase Else '其它类型If SaveFied(I).FieldIsNull <> 0 ThenFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=NULL"ElseFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=''"End IfEnd SelectElseSelect Case FldTypeCase 2, 3, 4, 5, 6, 17, 131 '数值类型FldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=" & TmpValCase 135If DbStyle = "MDB" ThenFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]=#" & TmpVal & "#"ElseFldVal = FldVal & ",[" & SaveFied(I).FieldName & "]='" & TmpVal & "'"End IfCase Else '其它类型FldVal = FldVal & ",[" & SaveFied(I).FieldName & "]='" & Replace(TmpVal, "'", "''") & "'"End SelectEnd IfEnd IfNextFldVal = " Set " & Right$(FldVal, Len(FldVal) - 1) & " " & WhereStrStrSql = "UpDate [" & DateTabName & "]" & FldValP_Cnn.Execute StrSqlMRs.MoveNextWendEnd IfUpdataDB = (Err.Number = 0)Err.ClearEnd Function''取某数据表下所有的字段及其属性'函数名:GetTabFldAttrib'参数: P_Cnn ADO连接,DateTabName 目标数据表名'返回值:SmFiedArrtr 类型数组'例: FiedAtrrib=GetTabFldAttrib(P_CNN,"ACHGOODS")Public Function GetTabFldAttrib(ByRef P_Cnn As ADODB.Connection, _DbTableName As String) As SmFiedArrtr()Dim A As LongDim StrSql As StringDim Rs As New ADODB.RecordsetDim ReturnVal() As SmFiedArrtrDim ReID As LongErr.ClearOn Error Resume NextIf P_Cnn.State <> 1 Then P_Cnn.OpenStrSql = "Select T op 1 * From [" & DbTableName & "]" '取字段名Set Rs = RsOpen(P_Cnn, StrSql)Set Rs.ActiveConnection = NothingErase ReturnVal: ReID = 0For A = 0 To Rs.Fields.Count - 1ReID = ReID + 1ReDim Preserve ReturnVal(ReID - 1)ReturnVal(ReID - 1).FieldType = Rs.Fields(A).Type '数据类型ReturnVal(ReID - 1).FieldName = Rs.Fields(A).Name '字段名ReturnVal(ReID - 1).FieldIsNull = Rs.Fields(A).Attributes And adFldIsNullable '是否可接受NULLReturnVal(ReID - 1).FieldDefSize = Rs.Fields(A).DefinedSize '定义的数据长度ReturnVal(ReID - 1).FieldActSize = 0 '实际数据长度(因只有字段名),故此值是0NextSet Rs = NothingGetTabFldAttrib = ReturnValErr.ClearEnd Function''取某数据表下除IMAGE字段名的所有字段名'函数名:GetTabFldName'参数: P_Cnn ADO连接,DateTabName 目标数据表名'返回值:String 类型数组'例: StrFld=GetTabFldName(P_CNN,"ACHGOODS")Public Function GetTabFldName(ByRef P_Cnn As ADODB.Connection, _DbTabname As String) As StringDim N As LongDim ReturnVal As StringDim FltArt() As SmFiedArrtrErr.ClearOn Error Resume NextIf P_Cnn.State <> 1 Then P_Cnn.OpenReturnVal = ""FltArt() = GetTabFldAttrib(P_Cnn, DbT abname)For N = 0 To UBound(FltArt)If FltArt(N).FieldType <> 205 ThenReturnVal = ReturnVal & DbTabname & "." & FltArt(N).FieldName & ","End IfNextReturnVal = Left$(ReturnVal, Len(ReturnVal) - 1)GetTabFldName = IIf(Err.Number = 0,ReturnVal, "")Err.ClearEnd Function''取记录集下所有的字段及其属性'函数名:GetRsAttrib'参数: mRs 记录集'返回值:FiedArrtr类型数组'例: RsAtrrib=GetRsAttrib(Rs)Public Function GetRsAttrib(ByRef MRs As ADODB.Recordset) As SmFiedArrtr()Dim A As LongDim ReturnVal() As SmFiedArrtrDim Rs As New ADODB.RecordsetDim ReID As LongErr.ClearSet Rs = MRs.CloneErase ReturnValFor A = 0 To Rs.Fields.Count - 1ReID = ReID + 1ReDim Preserve ReturnVal(ReID - 1)ReturnVal(ReID - 1).FieldType = Rs.Fields(A).Type '数据类型ReturnVal(ReID - 1).FieldName = Rs.Fields(A).Name '字段名ReturnVal(ReID - 1).FieldIsNull = Rs.Fields(A).Attributes And adFldIsNullable '是否可接受NULLReturnVal(ReID - 1).FieldDefSize = Rs.Fields(A).DefinedSize '定义的数据长度ReturnVal(ReID - 1).FieldActSize = Rs.Fields(A).ActualSize '数据的实际长度NextSet Rs = NothingGetRsAttrib = ReturnValErr.ClearEnd Function''取[窗体控件]与[字段]的对应关系'函数名:GetConT oFld'参数: P_Cnn ADODB.Connection,SelectStr SQL语句.'返回值:SmCtrlCorRs 类型数组'例: FrmAndFied=GetConT oFld(P_Cnn,Me)'*窗体控件命名规则:1-3 控件类型,4 W读写标志,R只读标志,其它,不作处理, 5 数据类型,6----最后.相对的字段名'*关于数据类型:C -字符 I 整数 F 浮点数 A 金额 U 单价 D 日期 T 时间Public Function GetConToFld(ByRef P_Cnn As ADODB.Connection, ByRef Frm As Object, SelectStr As String) As SmCtrlCorRs()Dim RevArr() As SmCtrlCorRsDim StrSql As StringDim Rs As New ADODB.RecordsetErr.ClearOn Error Resume Next' If (Frm Is Nothing) Or (P_Cnn Is Nothing) Then Exit Function ' If Len(Trim$(DbTabname)) = 0 Then DbTabname = /doc/9c5451052.html,'' StrSql = "SELECT TOP 1 * FROM [" & DbTabname & "]"StrSql = SelectStrIf P_Cnn.State <> 1 Then P_Cnn.OpenSet Rs = RsOpen(P_Cnn, StrSql)RevArr = GetConT oRs(Frm, Rs)GetConT oFld = RevArrSet Rs = NothingErase RevArrErr.ClearEnd Function''取[窗体控件]与[记录集]的对应关系'函数名:GetConT oRs'参数: Frm 源窗体名,mRs 源记录集'返回值:SmCtrlCorRs 类型数组'例: FrmAndFied=GetConT oRs(Me,Rs)'*窗体控件命名规则:1-3 控件类型,4 W读写标志,R只读标志,其它,不作处理, 5 数据类型,6----最后.相对的字段名'*关于数据类型:C -字符 I 整数 F 浮点数 A 金额 U 单价 D 日期 T 时间Public Function GetConToRs(ByRef m_Frm As Object, _ByRefMRs As ADODB.Recordset) As SmCtrlCorRs()Dim A As Long, B As LongDim SaveID As LongDim AddSave As BooleanDim ArrayCon() As Control '控件Dim TabFied() As SmFiedArrtr '数据库字段Dim SetFied() As String '同时存在的字段Dim ReturnVal() As SmCtrlCorRs '定义一个结构数组,用于返回Dim AddFile As SmCtrlCorRsDim Rs As New ADODB.RecordsetDim SId As LongDim FrmCon As ControlDim ConName As StringDim ConID As LongDim Frm As FormErr.ClearOn Error Resume NextErase ArrayCon: ConID = 0Set Frm = m_FrmFor Each FrmCon In Frm.Controls '取控件,放入一个数组中ConName = /doc/9c5451052.html,'/将图片框控件排除If UCase$(TypeName(FrmCon)) = UCase$("PictureBox") Or UCase$(TypeName(FrmCon)) = UCase$("Image") Or UCase$(TypeName(FrmCon)) = UCase$("SMPICBOX") ThenElseIf Len(ConName) > 5 ThenIf UCase$(Mid$(ConName, 4, 1)) = "W" Or UCase$(Mid$(ConName, 4, 1)) = "R" ThenConID = ConID + 1ReDim Preserve ArrayCon(ConID - 1)Set ArrayCon(ConID - 1) = FrmConEnd IfEnd IfEnd IfNext'/---------------------------------------------------------------------------------------------Erase TabFiedSet Rs = MRs.CloneIf Rs.EOF And Rs.BOF ThenRs.AddNewEnd IfTabFied = GetRsAttrib(MRs) '取字段属性If UBound(TabFied, 1) > 0 ThenSaveID = 0: AddSave = FalseFor A = 0 To UBound(TabFied, 1)For B = 0 To UBound(ArrayCon, 1)ConName = UCase$(Right$(ArrayCon(B).Name, Len(ArrayCon(B).Name) - 5))。
VB使用ADODB操作数据库的常用方法

VB使用ADODB操作数据库的常用方法在 VB 中,可以使用 ADODB (ActiveX Data Objects) 对象来操作数据库。
ADODB 提供了各种对象和方法,以便于连接到数据库,执行查询和更新操作。
以下是VB使用ADODB对象操作数据库的常用方法:1.引用ADODB对象库在 VB 项目中,首先需要引用 ADODB 对象库。
在菜单栏选择 "项目",然后选择 "引用"。
在引用对话框中,勾选 "Microsoft ActiveX Data Objects x.x Library",然后点击确定。
2. 创建 Connection 对象Connection 对象用于建立与数据库的连接。
可以使用以下代码创建Connection 对象:```Dim conn As New ADODB.Connectionconn.Provider = "Microsoft.ACE.OLEDB.12.0" ' 数据库提供程序conn.ConnectionString = "Data Source=<数据库路径>;Persist Security Info=False;" ' 数据库连接字符串conn.Open ' 打开数据库连接```3. 创建 Recordset 对象Recordset 对象用于保存数据库查询结果。
可以使用以下代码创建Recordset 对象:```Dim rs As New ADODB.Recordset```4.执行查询操作可以使用 Connection 对象的 Execute 方法执行 SQL 查询语句,并将结果保存到 Recordset 对象中。
以下是一个例子:```rs.Open "SELECT * FROM <表名>", conn```可以使用 rs 对象的 MoveNext 和 EOF 属性来遍历查询结果:```Do While Not rs.EOF'处理每一行数据rs.MoveNextLoop```5.执行更新操作可以使用 Connection 对象的 Execute 方法执行 SQL 更新语句,例如插入、修改或删除数据。
VB用Adodc控件连接sqlserver数据库方法

VB 用Adodc 控件连接sql server 2000 数据库的方法提供提序理抿’高圾I 斯有, 选择您希望堆接的數据Micro soft QLE DB der for SQL Stirrer Ml crrosof t 0L£ DB Simpl e Pr GVI der OLE D£ Fr QV I ier fsr MSirectory ServiG^sS^L Server Repli c aiion 00 DB Provi der f QT UTS下一歩題)»配有插图的详细用法请看jiben06@ 邮箱里的邮箱。
下面是文字介绍VB 用Adodc 控件连接sql server 2000 数据库的方法:1、打开vb 新建“标准EXE ;Mi crosoftHi crosoft Microsoft Microsoft Microsoft Microsoft Micrssoft Microsoft NicroEoftDB Pravi «ier for IB Fr Qvi -ler far DB Pr ovi «ler £oir DB Fr ovi der for DB Frovi «ier for DB Pr ovi Jer DB F T ovi derBata. fflLRing Serific 皀兀 STS F^ck^jges Indexing Service Internet Fublishing ODBC Drivers for OLAP S er TO ce E 8. 0 for Oracle确定HO.h帮助 I4. 0 OIJ BB Pxo^i der& iz >ActiveX EXE ActiveX PELAvti veK 控件Ac 丈 档 Eit«DHTML 应用程尊IIS 应用程取消 帮审⑩厂不再显恭这牛对话框迪〕2、在菜单栏点击“工程”,弹出下拉菜单,鼠标单击“部件”;■工程疋〕榕式咸调试⑪运行曲 且粛刖面体(£)亀诉加iflDI © 您竊加模块is 质加类複块X ) '賀添抑用尸控件迪) 衙 醸加雇性更広);:寸“勺彳」h-- L I. I 乔方n w "匚1裁3r质力D Citi Report,|廉力|] DHINL Fa 事乔加 Lfct« ErLvirom.erit 更雪ActiveX 设计器⑥…► 南加文件电)… CtrHD | 移除 Form I ® I___ : __ : ________ : _________________ J l◎引用®…\部件位),…Ctrl+r工程1雇性电)一3、在控件选项卡下面选择"Microsoft ADO Data Control 6.0(SP6)" 和新建闻再丨董新.ActiveX S 档Dll"Microsoft DataGrid Control 6.0 (SP6)", 单击“确定”按钮;部件LEUlAt tr Icti ¥«)[ Control nodul* Ma croifrftikccos B&rC^dr Control 9 0 Microsoft ActiveMovieControl血crogoft ADO B臥备CeiLtr^l 6 0 侶PE)Agrht C 畫・0Mi crssoft Chwt Cwitr^l 5- 0 WLSMi croxeft C OM Central & 0Microsoft CoMonMi cros^ft* Ml 1TFQS <>£tMi eras fittMierasfrft DiiJL>o理CorLtrel E. 0 (£D&t* Boimd Usd CflMr^ls 6, CDftttCri A匚砸ti"。
VB使用ADODB操作数据库的常用方法

VB使用ADODB操作数据库的常用方法ADO常用方法下面是我所掌握的使用ADO对数据库操作的一些常用方法,主要是提供给初学者作为参考,有不对的地方请指正.如有补充不胜荣幸准备工作========Dim conn As New ADODB。
Connection ’创建一个Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行Dim rs As ADODB。
Recordset ’创建一个Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用Dim CnStr As String,Sql As String’创建两个字符串变量分别存放两个集合的SQL语句代码段1、装载数据库(不属于Recordset集合)=============Dim FileNamw$,DbIp$,DbName$, DbUser$,DbPw$'以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码FileName = App。
Path & "\’数据库名'”DbIp = ”数据库地址"DbName = ”数据库名"DbUser = "数据操作员用户名”DbPw = "操作员密码”'以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量’1)连接Access数据库:'-—-----——-——-——-—--CnStr = "PROVIDER=microsoft。
jet.oledb。
3.51;persist security info =false;data source="& FileName & ”;Jet OLEDB:Database Password="&DbPw’2)连接Oracle数据库:'--—-—---—-——-——-——-CnStr = "PROVIDER=MSDAORA。
ADODB连接数据库的常用控件

'rs.Open Sql, conn, 1, 3 '后面的3是确定读写权限的
'以下参数代表了这个可选值的含义
'1 = adLockReadOnly (默认值)只读 — 不能改变数据。
'2 = adLockPessimistic 保守式锁定(逐个) — 在编辑时立即锁定数据源的记录。
Dim rs As ADODB.Recordset '创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用
Dim CnStr As String, Sql As String '创建两个字符串变量分别存放两个集合的SQL语句代码段
1、装载数据库(不属于Recordset集合)
'2)连接Oracle数据库:
'-------------------
CnStr = "PROVIDER=MSDAORA.1;Password=" & DbPw & ";User ID=" & DbUser & ";Data Source=" & FileName & ";Persist Security Info=True"
";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;"
'4)连接SQL的数据库
'------------------
CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=" & DbUser & ";pwd=" & DbPw & ";DRIVER=SQL Server;DATABASE=" & DbName & ";WSID=GQSOFT;SERVER=" &
VB中运用Data和ADO Data连接数据库的方法

要: 该文首先介绍  ̄ v i s u a l b a s i c 中Da t a 控件和A DO Da t a 控件的主要 功能, 然后详细介 绍了使 ̄Da t a 控件和A D 0 Da t a 控件实现v i s u a l D a t a 控件 A D O Da t a 控件
b a s i c 和数据库的连接方法, 并给 出了 操 作数据库控件的属性和方法。 关键 词: v i s u a l b a s i c 数据库 连接
中图分类号 : A
文章编号 : 1 6 7 4 — 0 9 8 x ( 2 0 l 4 ) 0 3 ( c ) 一 0 0 6 5 — 0 1
t a 控件 , 该 属性 在 运 行 时 Vi 8 u a l b a s i c 因其 开发 速 度 快 , 运用 定 控 件 所 绑 定Da D a t a F i e l d 属性 用 于指 定绑 定 简单 而被 广泛 使用 。 使用v i s u a l b a s i c 进 行 不 可 以修 改 ; 数 据 库 开发 时, 既可 直 接在 其 数 据 环境 中设 控 件 所要 显 示 的字 段名 称 。 利 用 数 据 控 件 和 绑 定 控 件 不 编 写 代 置, 也可 通 过 编 码 技 术 实 现 。 数 据 环 境 因其 码 可实 现 记 录 的 显示 、 修 改 、添 加 等 操 不需 要 过 多的编 程 而使 开 发方 便快 捷 , 编程 作。 具体步骤是: 在 窗 体 上 添 加 数 据 控 访 问 数 据 库 的方 法 主要 有: R D0、 ADO、 及 件 “ Da t a1 ”, 设 置其D a t a Ba s e Na I l l e, 0DBC等 。目前 使 用较 多 是 AD0。 下 面 介 绍 使 数 据 控 件 连 接 到 一 数 据 库 文 件 ; 设 置 用 Da t a 和ADO Da t a 连 接 数 据库 的 方 法。 Re c o r d S o u r c e 属 性 使 数 据 控 件 连 接 到 数 据库 中的 一 个 表 文件 ; 在 窗 体 上 添 加 相 应 的 绑定 控 件 , 设 置 这 些 绑 定 控 件 的 1 控 件介 绍 Da t a S o u r c e 属 性 为 窗体 上的 数 据 控 件 , 设 1 . 1 D a t a 控 件 t a Fi e l d 属性 , 使这 些 绑 定 D a t a 控 件是一种数据连 接控件, 它 能 置绑 定 控 件 的Da 及 将 数 据 库 中的 数 据 信 息 与 应 用程 序 中 的数 控 件 和 数 据 控 件 所 连 接 的 数 据 库 的 表 , 这 样 利 用 数 据 控 件 据 绑定 控 件 连 接 起 来 , 从 而 实现 对 数 据 库 表 中的 字段 对应 起 来 。 浏览、 的操作。 D a t a 控 件 支 持 大 多 数 与数 据 库 有 和 绑定 控 件 的配合 使 用就 可 以 显示 、 关的操作, 使 用 Da t a 控 件 可 以 开 发 非 常复 杂 的 数 据 库应 用程 序 。 D a t a 控 件 的 主要 功 能 : 完 成 对本 地 和 远 程 数 据 库的 连接 ; 打开 指 定的 数据 库 表 , 或 者 是 基 于S QL 的查询 集; 将 表 中 的 字 段 传 至数据绑定控 件, 并 通 过 修 改 数 据 绑定 控 件 中的 内容 来更 新 数据 库 ; 关 闭数 据 库 。 1 . 2 AD O控 件 AD0控 件 与 Da t a 控件相似, 使 用该 控
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB使用ADODB操作数据库的常用方法ADO常用方法下面是我所掌握的使用ADO对数据库操作的一些常用方法,主要是提供给初学者作为参考,有不对的地方请指正。
如有补充不胜荣幸准备工作========Dim conn As New ADODB.Connection '创建一个Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行Dim rs As ADODB.Recordset '创建一个Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用Dim CnStr As String, Sql As String'创建两个字符串变量分别存放两个集合的SQL语句代码段1、装载数据库(不属于Recordset集合)=============Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$'以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码FileName = App.Path & "\'数据库名'"DbIp = "数据库地址"DbName = "数据库名"DbUser = "数据操作员用户名"DbPw = "操作员密码"'以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量'1)连接Access数据库:'-------------------CnStr = "PROVIDER=microsoft.jet.oledb.3.51;persist security info =false;data source="& FileName & ";Jet OLEDB:Database Password="& DbPw'2)连接Oracle数据库:'-------------------CnStr = "PROVIDER=MSDAORA.1;Password="& DbPw & ";User ID="& DbUser & ";Data Source="& FileName & ";Persist Security Info=True"'其中:'PASSWORD: 密码'User ID: 用户号'Data Source: 数据库名'Persist Security Info:'Provider:'3)连接VF的DBF库:'----------------CnStr = "PROVIDER=MSDASQL.1;Persist Security Info=False;Driver={Microsoft Visual FoxPro Driver};UID="& DbUser & ";SourceDB="& FileName &";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;"'4)连接SQL的数据库'------------------CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid="& DbUser & ";p wd="& DbPw & ";DRIVER=SQL Server;DATABASE="& DbName & ";WSID=GQSOFT; SERVER="&DbIP'也可以使用这段简易代码CnStr = "Provider=SQLOLEDB;Data Source=" & DbIp & ";DATABASE=" & D bName & ";UID=" & DbUser & ";pwd=" & DbPwConn.Open cnstr '使用Connection 集合的Open 方法与数据库建立连接2、Recordset集合的常用方法=========================='1)打开一个表'------------Sql = "select * from 表名"'SQL查询语句Set rs = New ADODB.Recordset '新建一个实例rs.Open Sql, conn '使用Open 方法打开数据库中的一个表'注意,这种打开方式只能使用rs.MoveNext (即,向后移动行坐标)而不能像其他方向,并且不能修改数据内容''rs.Open Sql, conn,1 '虽然只加了个“1”,但这种方法可以向任何方向移动行坐标。
''以下参数代表了这个可选值的含义'0 = adOpenForwardOnly (默认值)打开仅向前类型游标。
'1 = adOpenKeyset 打开键集类型游标。
'2 = adOpenDynamic 打开动态类型游标。
'3 = adOpenStatic 打开静态类型游标。
''虽然使用以上方法可以可以实现行坐标(游标)的任意移动,但是仍然无法写入数据。
因此需要进一步的对Open 方法进行完善'rs.Open Sql, conn, 1, 3 '后面的3是确定读写权限的'以下参数代表了这个可选值的含义'1 = adLockReadOnly (默认值)只读—不能改变数据。
'2 = adLockPessimistic 保守式锁定(逐个)—在编辑时立即锁定数据源的记录。
'3 = adLockOptimistic 开放式锁定(逐个)—只在调用Update 方法时才锁定记录。
'4 = adLockBatchOptimistic 开放式批更新—用于批更新模式(与立即更新模式相对)。
''2)读写数据'----------'增加一行记录并对新记录的内容进行修改并保存可以如下写法rs.AddNew '增加一行记录rs("...")="..."'数据读写操作...rs.UpDate '保存写入资料,如果使用只读权限,则不能使用这个方法rs.Close '这个方法用来关闭你所代开的表,如果不使用这个方法也可以,但是数据库仍然认为你在对标进行锁定,可造成数据库负担过重2、对数据进行筛选和排序=======================Sql = "select * from 表名"'SQL查询语句'以上为打开一个表的所有内容Sql = "select top 50 * from 表名"'SQL查询语句'以上为只打开前50行的记录Sql = "select top 50 列名1,列名2,列名5 from 表名"'SQL查询语句'以上为只打开前50行的记录,并且只打开第1、2、5列数据Sql = "select * from 表名where 列名1='"& 字段& "'"'SQL查询语句'以上为一个简单的筛选,表示打开的内容必须符合[列名1='" & 字段& "'"]的内容'需要注意的是,数据库列的类型必须匹配,比如字符串类型需要以单引号括起'而数字类型则不能用单引号括起'另外SQL语句还支持通配符,例如列名1 like '%" & 字段& "%'" 表示包含[字段]'在表达式中的匹配'? _(下划线)任何单一字符'* or % 零个或多个字符'# 任何单一数字(0 —9)'[charlist] 任何在字符表中的单一字符'[!charlist] 任何不在字符表中的单一字符'注:根据数据库的不同?、_和*、%的应用有所差别,比如SQL只使用% 和_ 分别代表多个字符和单一字符Sql = "select * from 表名where 列名1='"& 字段& "' ORDER BY 字段1 ASC"'对查询结果进行升序排列Sql = "select * from 表名where 列名1='"& 字段& "' ORDER BY 字段1 DESC"'对查询结果进行降序排列Sql = "select * from 表名where 列名1='"& 字段& "' ORDER BY 字段1 DESC, ORDER BY 字段2 DESC"'对查询结果进行多维降序排列(速度奇慢,不推荐使用)3、Recordset集合的常用属性方法==============================rs.BOF '是否游标在最上边rs.EOF '是否游标在最下边rs.RecordCount '记录集的行数(如果使用像前类型的游标,可能返回不准确)rs.AddNew '新建一行记录rs.Update '保存当前行被修改的记录rs.Delete '删除当前行rs.Close '关闭记录集4、Fields集合的一些属性的解释============================='以下为简写,正常情况需要rs.Fileds.。