vb6.0连接远程sql数据库的模块以及使用实例
- 格式:doc
- 大小:196.50 KB
- 文档页数:5
VB 6.0 + SQL综合实验步骤一:建立数据库新建数据库,命名为“KCGL”,在里面新建5个表:dept、course、sc、student 和users。
其中前四个表的表结构和数据见实验三。
Users表用来存放用户的帐号和密码,表结构如下:Users表建好后,往表中插入几个用户的用户名和密码(自己给定)。
步骤二:新建窗体打开VB6.0,新建一个标准的EXE文件。
在右下角的“属性窗口”框中,在“名称”中输入“Frmlogin”,在”Caption”中输入“登录”。
如下图所示:然后在工程资源管理器中,鼠标右键点击“窗体”,选择“添加”,再选择“添加窗体”。
如下图所示:个工程文件,如下图所示:将Form1的名称改为“frmmain”,Caption改为“学生信息管理”。
(方法:在属性窗口中修改)步骤三:设置窗体向Frmlogin窗体分别添加两个 Label 控件、两个 TextBox 控件和两个CommandButton。
控件在左侧工具箱,如下图所示:鼠标左键点击需要添加的控件,放到右边的窗体中,就可以添加控件了。
添加完控件后需要修改属性,方法是在属性窗口里面修改。
各控件属性修改如下:设置好后的窗体如下图所示:在菜单栏上点击“工程”—>“引用”,在“microsoft activex data objects 2.6 library”前面打勾,点击“确定”。
如下图所示:步骤四:填写代码(重要)首先双击“登录”按钮,打开代码编辑界面,输入如下代码。
要注意的是“Data Source=DEXX25”表示本机服务器的名字为“DEXX25”,大家做实验时需要将你们自己的机子作为服务器,方法是点击右下角的SQL 服务管理器查看。
Private Sub Command1_Click()Dim Cn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim cmd As New mandDim connstring As StringDim sqlstr As StringStatic iCount As Integerconnstring = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=kcgl;Data Source=DEXX25"sqlstr = "select * from users where username='" & Trim(Text1.Text) & "' and password='" & Trim(Text2.Text) & "'"Cn.Open connstringSet rs = Cn.Execute(sqlstr) '使用连接对象的Execute方法,返回记录集If rs.EOF TheniCount = iCount + 1MsgBox "用户名或密码不正确,请重新登录"Text1.Text = ""Text2.Text = ""Text1.SetFocusElseFrmlogin.HideFrmmain.ShowUnload FrmloginEnd Ifrs.CloseCn.CloseIf iCount >= 3 ThenMsgBox "超过次数", , "登录失败"EndEnd IfSet rs = NothingSet Cn = NothingEnd Sub接着双击“退出”按钮,输入如下代码:Private Sub Command2_Click()EndEnd Sub步骤五:启动窗体(F5)按F5或工具栏上的,启动窗体,输入用户名和密码,点击“登录”。
作为微软旗下一款优秀的RAD工具,VB在数据库应用开发方面的能力十分强大。
微软设计了多种数据库访问方法,下面通过对VB访问数据库的多种技术进行深入剖析,并总结出实际开发中的几点经验。
希望能够对那VB的初学者有所帮助。
(注意,文中所有的描述均在Windows 2000 professional和Visual Basic 6.0的环境下进行的)一. DAO、RDO、ODBC和ADO在VB的开发环境中,可以使用三种数据库访问方式,它们分别是:数据访问对象(DAO)、远程数据对象(RDO)和ADO对象模型。
DAO:数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Microsoft Access 所使用,现在已经支持其它数据库),并允许开发者通过ODBC直接连接到其他数据库一样,直接连接到Access 表。
DAO 最适用于单系统应用程序或在小范围本地分布使用。
其内部已经对Jet数据库的访问进行了加速优化,而且其使用起来也是很方便的。
所以如果数据库是Access数据库且是本地使用的话,建议使用这种访问方式。
VB已经把DAO模型封装成了Data控件,分别设置相应的DatabaseName属性和RecordSource属性就可以将Data控件与数据库中的记录源连接起来了。
以后就可以使用Data控件来对数据库进行操作。
RDORDO(Remote Data Objects)远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC 的底层功能和灵活性。
尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。
但是,RDO已被证明是许多SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。
RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。
VBA与SQL语句的结合与应用实例在现代信息化时代,数据处理已经成为各个行业中不可或缺的一环。
在处理大量数据时,使用Excel和SQL数据库是非常常见的选择。
而结合VBA(Visual Basic for Applications)和SQL语句,可以将两者的优势发挥到极致,提高数据处理的效率和准确性。
本文将通过一些实例来展示VBA与SQL语句的结合与应用。
案例一:数据导入与清洗假设我们有一个存储了客户订单的Excel表格,我们需要将其中的数据导入到SQL数据库中进行进一步处理。
这时,我们可以使用VBA编写一个宏来实现自动将Excel中的数据导入到数据库表中。
首先,我们需要在Excel中添加一个按钮,通过宏来触发数据导入的操作。
然后,我们可以使用VBA代码来连接到数据库,并执行相应的SQL语句将数据导入。
示例代码如下:```vbaSub ImportDataToSQL()Dim conn As ObjectDim rs As ObjectDim strSQL As StringDim rng As RangeDim cell As RangeSet conn = CreateObject("ADODB.Connection")conn.ConnectionString = "Provider=<provider>; Data Source=<data_source>; Initial Catalog=<catalog>; User ID=<user_id>; Password=<password>"conn.OpenSet rng = ThisWorkbook.Sheets("Sheet1").Range("A2:D10") ' 假设数据范围为A2:D10strSQL = "INSERT INTO TableName (Column1, Column2, Column3, Column4) VALUES (?,?,?,?)"For Each cell In rngSet rs = CreateObject("ADODB.Recordset")rs.Open strSQL, connrs.AddNewrs.Fields("Column1").Value = cell.Offset(0, 0).Valuers.Fields("Column2").Value = cell.Offset(0, 1).Valuers.Fields("Column3").Value = cell.Offset(0, 2).Valuers.Fields("Column4").Value = cell.Offset(0, 3).Valuers.Updaters.CloseSet rs = NothingNext cellconn.CloseSet conn = NothingEnd Sub```在上述示例代码中,我们需要替换掉连接字符串中的`<provider>`、`<data_source>`、`<catalog>`、`<user_id>`和`<password>`,以便正确连接到目标数据库。
vb连接sql数据库:VB访问SQL Server数据库技术全揭密疯狂代码 / ĵ:http://VisualBasic/Article53478.html 、引言 SQL Server是微软推出中小型网络数据库系统是目前最常用数据库系统的随着SQL Server网络数据库应用日益增多这种Web数据库应用系统正常运行般依赖于已存在用户数据库创建维护数据库工作可用SQL Server提供SQL Enterprise Manager工具来进行如能提供种定制数据库管理工具通过管理应用来管理数据库及其设备对用户来说无疑是最理想 Visual Basic作为种面向对象可视化编程工具具有简单易学灵活方便和易于扩充特点而且Microsoft为其提供了和SQL Server通信API集及工具集因此它越来越多地用作大型公司数据和客户机—服务器应用前端和后端Microsoft SQL Server相结合VB能够提供个高性能客户机—服务器方案 2、VB访问SQL Server数据常用思路方法 使用Visual Basic作为前端开发语言和SQL Server接口有几种常用思路方法即: ①数据访问对象/Jet ②为ODBC API编程 ③使用SQL ServerVisual Basic库(VBSQL)为DB库API编程 ④RDO 远程数据对象(RemoteData Objects) ⑤ADO 数据对象(Active Data Objects) 1、数据访问对象/Jet VB支持Data Access Objects(DAOs)子集DAO思路方法虽然不是性能最好管理客户机—服务器的间对话方式但它确有许多优点DAO/Jet是为了实现从VB访问Access数据库而开发接口对象使用DAOs访问SQL Server过程如下:应用准备好语句并送至JetJet引擎(MASJT200.DLL)优化查询载入驱动管理器并和的通讯驱动管理器(ODBC.DLL)通过驱动器(SQLSRVR.DLL)实现连接到数据源翻译并向SQL Server提交SQL语句且返回结果下面是个用DAOs访问SQL ServerVB例子 注释:Form Declarations Dim mydb As Database Dim mydyna As Dyna オ Private Sub Form_Load Set mydb = OpenDatabase("", False, False, "ODBC; DSN=Myserver; WSID=LCL; DATABASE = sales") Set mydyna = mydb CreateDyna("Select*from Customers") オ End Sub 上述例子是以非独占、非只读方式打开sales数据库并检索Customers表中所有字段OpenDatabase最后个参数是ODBC连接串参数它指明了Microsoft Access连接到SQL Server所需要知道些内容其中“DSN”为数据源名“WSID”为工作站名“DATABASE”为所要访问数据库名 2、利用ODBC API编程 ODBC(Open Database Connectivity)思想是访问异种数据库种可移植方式和数据资源对话公用组装在个称为驱动管理器(ODBC.DLL)动态连接中应用驱动管理器中而驱动管理器反过来通过驱动器(SQLSRVR.DLL)把它们送到服务器中 下面代码使用上面些先登录到个服务器数据库并为随后工作设置了语句句柄 Global giHEnv As Long Global giHDB As Long Global giHStmt As Long Dim myResult As eger Dim myConnection As Srting Dim myBuff As String*256 Dim myBufflen As Integer If SQLAllocEnv(giHEnv)<>SQL_SUCCESS Then MsgBox"Allocation couldn注释:t happen!" End If If SQLAllocConnect(giHEnv,giHDB)<>SQL_SUCCESS Then MsgBox "SQL Server couldn注释:t connect!" End If myConnection="DSN=myServer;UID=LCL;PWD=;APP=ODBCTest;WSID=LCL;DATABASE=sales" myResult=SQLDriverConnect(giHDB,Test,form1.hWnd,myConnection.len(myConnection), myBuff,256,myBufflen,SQL_DRIVER_COMPLETE_REQU IE D) myResult=SQLAllocStmt(giHDS,giHStmt) myResult=SQLFreeStmt(giHStmt,SQL_COLSE) rsSQL="Select * from Customers Where City = "Hunan"" myResult = SQLExecDirect(giHStmt,rsSQL,Len(rsSQL)) 3、使用VBSQL对DB库API编程 DB库是SQL Server本地APISQL ServerVisual Basic库(VBSQL)为Visual Basic员提供API从定意义上说VBSQL是连接Visual Basic到SQL Server性能最好最直接方式VBSQL包含以下 3个文件: VBSQL.VBX: 包含库具有访问重要消息和处理能力 VBSQL.BI:包括所有常量和变量介绍说明 VBSQL.HLP:Windows帮助文件使用VBSQL指南 使用VBSQL时必须将VBSQL.BI加入到Visual Basic工程文件中并确保VB运行时有VBSQL.VBX文件 般DB库API编程过程是这样:先通过SqlInit对DB库进行化再SqlConnection打开个连接然后就可做些工作下面代码是个化DB库并登录到服务器通用例程 Private Sub InitializeApplication DBLIB_VERSION=SqlInit If DBLIB_VERSION=""Then MsgBox"Could not initialize DBLIB!Exit application.", MB_ICONEXCLAMATION End If End Sub Private Function LoginToServer As eger loginToServer=SUCCEED Status%=SqlSetloginTime%(loginTimeOut) If giSqlConn<>0 Then SqlClose(giSqlConn) 注释:关闭已打开连接 giSqlConn=SqlOpenConnection(gsServerName, gsLoginID, gsPassword, ProgramName, ProgramName) If giSqlConn<>0 Then liresuit=SqlUse(giSqlConn,"Sales") Else LogoServer=FAIL End If End Function 4、RDO 远程数据对象(RemoteData Objects) 要讨论RDO,就必然要谈到DAORDO是从DAO派生出来,但两者很大区别在于其数据库模式DAO是针对[记录(Records)]和[字段( Fields)],而RDO是作为[行(Rows)]和[列(Columns)]来处理也就是说DAO 是ISAM模式,RDO是关系模式此外DAO是访问AccessJet引擎(Jet是ISAM)接口而RDO则是访问ODBC接口 可见,RDO是综合了DAO/Jet、VBSQL/DBLib以及ODBC优点对象(Object)需要强调是RDO是包裹着ODBC API层薄薄外壳, 被设计成在后台(服务器端)有数据库存在前提下运行同时也是针对SQL Server和Oracle而特别设计 RDO优势在于它完全被集成在VB的中此外直接访问SQL Server存储过程、完全支持T-SQL、T-SQL调试集成在开发环境中、Visual Database Tools集成化等也是RDO长处 在RDO对象和集合中有很多对数据库状态和设定进行操作属性(Property)以及对数据库进行操作思路方法(Method)利用这些从RDO2.0起就可以开发事件驱动数据库应用 RDO对象和VB中其他对象概念相同和VB用ActiveXControl控件(以往称为Custom Control或OCX、VBX)相似是,RDO也带有属性和思路方法;但同Spread、InputMan等普遍应用ActiveXControl控件区别是RDO没有自己用户界面因而可以和VB标准TimerControl控件归为同类当然也可以将RDO看作ODBC API进而对后台数据库操作加以控制对象在RDO属性和思路方法中包含了对单个ODBC API以及连串API ①rdoEngine对象 最初RDO对象以及RDC(远程数据Control控件)时自动生成rdoEngine对象附带事件(incident)rdoEngine用于对RDO全局属性参数、选项进行设置是在RDO阶层结构内处于最上层对象包含了所有其他对象 rdoEngine对象和DAO/Jet区别虽然被多个应用共享但体现rdoEngine对象设定值属性却并不共用而是在各自应用界面中对其分别加以设定这些设定值对其他使用RDO以及RDC应用没有任何影响rdoEngine不是集合要素而是重新定义对象rdoEngine对象不能被追加作成对象属性初值 ②rdoEnvironment对象 RDO对象在自动创建rdoEngine对象时将rdoEnviroment对象值生成并保存为rdoEnviroments(0)般情况下应用中不必追加rdoEnvironment对象大多只需对已有rdoEnviroments(0)进行操作就可以了只有在支持个以上事务(Transaction)需要将用户名和口令信息分别处理情况下利用rdoCreateEnvironment思路方法将特定用户名和口令值做成新rdoEnvironment对象在这个思路方法中可以指定固有名、用户名和口令如果所指定值和rdoEnvironments集合已经存在成员名称相同会产生新建rdoEnvironment对象自动追加在rdoEnvironments集合最后调rdoCreateEnvironment思路方法时其name参数可以是长度为0文字列这时新rdoEnvironment对象将不会被追加在rdoEnvironments集合的中 ③rdoConnection对象 rdoConnection对象用于同SQL Server连接管理 下面是和SQL Server连接例子 用OpenConnection思路方法个例子 设定DSN为MyDSN: Dim Cn As rdoConnection Dim En As rdoEnvironment Dim Conn As String Conn = "DSN = MyDSN; UID = Jacob;" & "PWD = 123456; DATA BASE = MyDb;" Set Cn= En.OpenConnection("", rdDriverPrompt, False, Co nn) Set Cn= En.OpenConnection(Prompt:= rdDriverPrompt, Rea dOnly:= False,Connect:= Cnn) 用EstablishConnection思路方法个例子 这里以独立rdoConnection对象为例介绍说明和SQL Server连接 Public WithEvents Eng As rdoEngine Public WithEvents Cn As rdoConnection Private Sub Form_Load Set Eng = New rdoEngine Set Cn = New rdoConnection With Cn .Connect = "UID = ; PWD = ;" & "DATABASE = pubs; DSN = biblio" .LoginTimeout = 5 .EstablishConnection rdoDriverNoPromt, True, rdAsyncEna ble End With End Sub 在这个例子中Form_Load对rdoEngine和rdoConnection对象进行化这里有点需要注意rdoConnection对象是处于独立状态的下即使是处于未连接状态也可以设置属性值接下来是rdoConnect对象事件处理从RDO 2.0起可以实现异步方式(rdAsyn cEnable)EstablishConnection就设定为该值在异步状态下不必等待和数据库连接可以迅速从Form_Load 中退出 然后是BeforeConnect事件该处理在和数据库连接开始以前被激发此时不能进行有关终止连接操作: Private Sub Cn_BeforeConnect(ConnetString As String, Pro mpt As Variant) MsgBox "正在连接" & ConnectString, vbOKOnly, "连接前" End Sub 连接完成的后事件处理: Private Sub Cn_Connect(ByVal ErrorOccurred As Boolean) Dim M As String If ErrorOccurred Then For Each er In rdoErrors M = M & er & vbCrLf & M Next MsgBox "连接失败" & vbCrLf & M Else MsgBox "连接成功" 注释:这是确认连接状态测试代码 Cn.Excute "use pubs" End Sub RDO连接处理结束后在该事件中确认连接成功和否连接成功情况下ErrorOccurred返回False失败时为True由此可以对rdoErrors集合进行检测: Private Sub Eng_InfoMessage For Each er In rdoErrors Debug.Pr er Next RdoErrors.Clear End Sub 不能和SQL Server连接原因多种多样有可能是由于对数据库访问权限、网络连接问题、数据库表信息、SQL Server同时连接许可数、资源不足等等具体情况需要和网络管理员商量 断开连接操作非常简单但又很重要RDO不提供自动断开功能 Cn.Close Set Cn = Nothing 注释:释放对象所占内存资源 En.Close Set En = Nothing 注释:释放对象所占内存资源 VB是对象语言Form、ActiveXControl控件也都是对象使用对象后必须养成将对象设为Nothing把它从内存中释放编程习惯这样可以预防很多不可预测往往中发生原因不明时其原因就在于此 5、ADO 数据对象(Active Data Objects) ADO是基于全新OLE DB技术OLE DB可对电子邮件、文本文件、复合文件、数据表等各种各样数据通过统接口进行存取随着ActiveXControl控件升级(Windows 98ActiveX 5.0)RDO将被以ActiveX技术为基础ADO接口所替代下面将介绍基于ActiveX技术ADO访问SQL Server 6.5数据库技术和思路方法基于浏览器ADO接口常用如下: (1)取当前工作数据库 由于管理任务般都必须在Master库中完成因此在执行管理任务的前最好保存当前工作库以便完成任务的后再切换回原来任务 Public Function SQLGetCurrentDatabaseName(Cn As ADODB.Connection) As String Dim sSQL As String Dim RS As New ADODB.Record On Error GoTo errSQLGetCurrentDatabaseName sSQL="select CurrentDB=DB_NAME ( )" RS.Open sSQL, Cn SQLGetCurrentDatabaseName=Trim $ (RS! CurrentDB) RS.Close Exit Function errSQLGetCurrentDatabaseName: SQLGetCurrentDatabaseName=" " End Function (2)取SQL Server安装目录下DATA子目录路径 取SQL Server设备文件缺省目录返回如D:MSSQL DATA Public Function SQLGetDataPath(Cn As ADODB.Connection) As String Dim sSQL As String Dim RS As New ADODB.Record Dim sFullPath As String On Error GoTo errSQLGetDataPath sSQL="select phyname from master..sysdevices where name=注释:master注释: " RS.Open sSQL, Cn sFullPath = RS! phyname RS.Close SQLGetDataPath=Left $ (sFullPath, Len(sFullPath) -10) 注释:MASTER.DAT大小 Exit Function errSQLGetDataPath: SQLGetDataPath=" " End Function (3)创建个新数据库 Public Function SQLCreateDatabase65 (Cn As ADODB.Connection,sDBName As String,sDataDeviceName As String, nDataSize As Integer, Optional sLogDeviceName, Optional nLogSize) As Boolean Dim sSQL As String On Error GoTo errSQLCreateDatabase65 Dim sDB As String sDB =SQLGetCurrentDatabaseName(Cn) sSQL = "USE master" Cn.Execute sSQL sSQL ="CREATE DATABASE" & sDBName sSQL = sSQL &" _disibledevent= False End Function 3、性能比较及应用介绍说明 用VB开发基于SQL Server数据库系统以上几种访问SQL Server思路方法各有各特点DAOs思路方法是基于对象因而便于使用但是它是从Visual Basic到SQL Server最慢连接方式ODBC API和VBSQL思路方法从本质上讲是基于ODBC API思路方法通用性好允许最强互操作性编程简单但速度慢于VBSQL思路方法VBSQL思路方法通过VBSQLControl控件提供了重要SQL Server前端应用所需灵活性、强大功能和良好性能它具有真正事件驱动及处理能力完全支持异步处理、游标和计算列等这些都是VBSQL思路方法超出其它思路方法优势但其编程稍复杂RDO是位于ODBC API的上个对象模型层它依赖ODBC API、ODBC驱动以及后端数据库引擎来实现用RDO所需短小(约250 KB)、快速RDO具备基本ODBC处理思路方法可直接执行大多数ODBC APIRDO包含在VB 4.0/VB 5.0企业版中由MSRDO32.DLL动态连接库来实现RDO是综合了DAO/Jet、VBSQL/DBLib和ODBC优点对象模型包含ODBC API应用层设计为在后台(服务器端)有数据库存在前提下运行是针对SQL Server和Oracle而特别设计RDO优势在于它完全被集成在VB的中可直接访问SQL Server存储过程、完全支持T-SQL、T-SQL调试集成在开发环境中、Visual Database Tools集成化等但微软已宣布今后不再对VBSQL/DBLib进行升级而ODBC API般编程方式也不为人们所喜爱RDO应用将逐渐减少至于实际使用哪种接口方式在很大程度上依赖于用户应用具体情况而定 4、VisualBasic访问数据库前景 近来随着Web应用软件Software迅速发展和现有数据存储形式多种多样Visual Basic访问数据库解决方案面临诸如快速提取分布于企业内部和外部有用商业信息等多种挑战为此Microsoft提出种新数据库访问策略即“统数据访问”(UniversalDataAccess)策略“统数据访问”提供了高性能存取包括关系型和非关系型在内多种数据源提供独立于开发工具和开发语言简单编程接口这些技术使得企业集成多种数据源、选择更好开发工具、应用软件Software、操作平台、建立容易维护解决方案成为可能 “统数据访问”基础是Microsoft数据访问组件这些组件包括ActiveXDataObjects(ADO)、RemoteDataService(RDS也称“高级数据连接器或”ADC)、OLEDB和ODBC2009-1-15 17:00:34疯狂代码 /。
VB6.0数据库访问技术与例程解析(转)引⾔ 引⾔ 作为微软旗下⼀款优秀的RAD⼯具,VB在数据库应⽤开发⽅⾯的能⼒⼗分强⼤。
微软设计了多种数据库访问⽅法,下⾯通过对VB访问数据库的多种技术进⾏深⼊剖析,并总结出实际开发中的⼏点经验。
希望能够对那VB的初学者有所帮助。
(注意,⽂中所有的描述均在Windows 2000 professional和Visual Basic 6.0的环境下进⾏的)⼀. DAO、RDO、ODBC和ADO ⼀. DAO、RDO、ODBC和ADO 在VB的开发环境中,可以使⽤三种数据库访问⽅式,它们分别是:数据访问对象(DAO)、远程数据对象(RDO)和ADO对象模型。
DAO: 数据访问对象是⽤来显露了Microsoft Jet数据库引擎(最早是给Microsoft Access 所使⽤,现在已经⽀持其它数据库),并允许开发者通过ODBC直接连接到其他数据库⼀样,直接连接到 Access 表。
DAO 最适⽤于单系统应⽤程序或在⼩范围本地分布使⽤。
其内部已经对Jet数据库的访问进⾏了加速优化,⽽且其使⽤起来也是很⽅便的。
所以如果数据库是Access数据库且是本地使⽤的话,建议使⽤这种访问⽅式。
VB已经把DAO模型封装成了Data控件,分别设置相应的DatabaseName属性和RecordSource属性就可以将Data控件与数据库中的记录源连接起来了。
以后就可以使⽤Data控件来对数据库进⾏操作。
RDO RDO RDO(Remote Data Objects)远程数据对象是⼀个到ODBC的、⾯向对象的数据访问接⼝,它同易于使⽤的DAO style组合在⼀起,提供了⼀个接⼝,形式上展⽰出所有ODBC的底层功能和灵活性。
尽管RDO在很好地访问Jet或ISAM数据库⽅⾯受到限制,⽽且它只能通过现存的ODBC驱动程序来访问关系数据库。
但是,RDO已被证明是许多SQL Server、Oracle 以及其他⼤型关系数据库开发者经常选⽤的最佳接⼝。
vb使用DataGrid连接sql详细步骤vb使用DataGrid连接sql详细步骤1、“工程”-“引用”-选中“microsoft activex data objects2.8 library”-“确定”2、“工程”-“部件”-选中“microsoft datagrid control 6.0”-“确定”3、窗体上添加datagrid控件datagrid1,设置datagrid,右键单击datagrid,在“列”选项卡中输入这个datagrid相应的列对应的数据库字段,如column 0 标题输入“编号”,数据字段输入“Test_No”(这个例子连接的数据库名字为databasename.mdb,datagrid显示的是表test下的Test_No字段)Public cnn As ADODB.ConnectionPublic Sub Setdb()Set cnn = New ADODB.Connectioncnn.Provider = "Microsoft.Jet.OLEDB.4.0"cnn.ConnectionString = "Data Source=" & App.Path &"\data\systemParams.mdb;Jet OLEDB:Database Password="cnn.CursorLocation = adUseClientcnn.OpenEnd Sub'4、连接数据库Public cnn As ADODB.ConnectionPublic Sub Setdb()On Error Resume NextSet cnn = New ADODB.Connectioncnn.Provider = "Microsoft.Jet.OLEDB.4.0"cnn.ConnectionString = "Data Source=" & App.Path &"\data\databasename.mdb;Jet OLEDB:Database Password="cnn.CursorLocation = adUseClientcnn.OpenEnd Sub5、在添加datagrid的窗体的formload 事件代码如下:Private Sub Form_Load()On Error Resume NextDim rst As RecordsetDim Strsql As StringSetdb '连接数据库Set DataGrid1.DataSource = NothingStrsql = "select * from test order by T est_No"Set rst = cnn.Execute(Strsql)If Err ThenMsgBox "读取数据失败"Exit SubEnd IfIf rst.EOF ThenSet DataGrid1.DataSource = NothingElseSet DataGrid1.DataSource = rstEnd IfEnd Sub6、运行程序,则打开窗体,DataGrid就显示出test表中的test_no字段里的值。
在VBA中操作SQL数据库的方法和技巧VBA(Visual Basic for Applications)是一种编程语言,用于开发Microsoft Office应用程序的自定义宏和脚本。
它提供了一种强大的工具,用于操作SQL数据库。
在本文中,我们将探讨在VBA中操作SQL数据库的一些方法和技巧。
首先,我们需要使用ADO(ActiveX Data Objects)库来连接和操作数据库。
ADO是一种用于访问数据源的COM组件,它允许我们在VBA中与SQL数据库进行通信。
连接数据库是使用VBA操作SQL数据库的第一步。
我们可以使用ADODB.Connection对象来建立与数据库的连接。
以下是一个连接到SQL Server数据库的示例:```vbaDim conn As ObjectSet conn = CreateObject("ADODB.Connection")conn.ConnectionString = "Provider=SQLOLEDB;DataSource=server_name;Initial Catalog=database_name;UserID=user_id;Password=password;"conn.Open```在上面的示例中,我们首先创建了一个ADODB.Connection对象,并设置了用于连接数据库的连接字符串。
连接字符串的具体格式取决于所使用的数据库类型和连接信息。
然后,我们通过调用conn.Open方法打开数据库连接。
接下来,我们可以使用mand对象执行SQL查询和操作数据库。
以下是一个执行SELECT查询并将结果返回到Excel工作表的示例:```vbaDim cmd As ObjectSet cmd = CreateObject("mand")cmd.ActiveConnection = connmandText = "SELECT * FROM table_name"mandType = 1 ' adCmdTextDim rs As ObjectSet rs = cmd.ExecuteSheet1.Range("A1").CopyFromRecordset rs```在上面的示例中,我们创建了一个mand对象,并设置其ActiveConnection属性为之前创建的数据库连接。
Vb6.0连数据库1.1 ADO(ActiveX Data Object)连接方式在连接数据库前,首先要在Visual Basic 6.0菜单中“工程”—>“引用”中选择Microsoft ActiveX Data Objects 2.6 Library 和Microsoft ActiveX Data Objects Recordset 2.6 Library这两个组件。
实例:以建立登陆系统为例,介绍无源数据库连接。
在Microsoft SQL Server 2000 中建立一个Student 的数据库,在Student数据库中建立login_user(name,password)的数据表,Microsoft SQL Server服务器的名为data_server。
代码如下:Option ExplicitPublic LoginSucceeded As Boolean'引用Microsoft ActiveX Data Objects 2.6 Library'定义连接对象和记录集Dim conn As ADODB.ConnectionDim rs As ADODB.Recordset'对取消按钮单击事件的响应Private Sub cmdCancel_Click()'设置全局变量为false'不提示失败的登录LoginSucceeded = FalseMe.HideEnd Sub'对登录按钮单击事件的响应Private Sub cmdOK_Click()Set conn = New ADODB.ConnectionSet rs = New ADODB.Recordset'建立无源数据库连接conn.ConnectionString="driver={sqlserver};server=data_server;uid=sa;pwd=;Database=student"conn.ConnectionTimeout = 50conn.OpenDim str As String'连接连接对象Set rs.ActiveConnection = conn'设置游标类型rs.CursorType = adOpenDynamicIf Trim(txtUserName.Text = "") ThenMsgBox "用户名不能为空,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"txtUserName.SetFocusElse'设置查询字符串str = "select * from login_user where name ='" & Trim(txtUserName.Text) & "'" rs.Open strIf rs.EOF = True ThenMsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"txtUserName.SetFocusElse'登录成功,连接主窗口If (Trim(txtPassword.Text) = Trim(rs.Fields("password"))) Then LoginSucceeded = TrueMe.Hidemain.ShowElseMsgBox "密码不正确,请重输入密码!", , "警告"txtPassword.SetFocusSendKeys "{Home}+{End}"End IfEnd IfEnd IfEnd Sub2 通过配置ODBC环境,进行数据源的注册,对数据库进行连接、访问和操作。
Vb6.0连接sql数据库的模块以及使用实例
打开VB6.0,新建工程SQL_data,新建一个EXE,并添加一个模块。
如图
一:添加引用和部件(如下两图)蓝色的两个,是要选中打勾的。
注意,一个是“引用”,一个是“部件”。
二:添加一个模块Data_Sql,并把图下面的复制粘贴到模块中。
'连接SQL的模块
Public conn As ADODB.Connection
Public rs As ADODB.Recordset
Public addFlag As Boolean '声明部分
Public Function OpenCn(ByVal Cip As String, ByVal users As String, ByVal pw As String) As Boolean '连接模块填写数据库等信息
Dim mag As String
On Error GoTo strerrmag
Set conn = New ADODB.Connection
conn.ConnectionTimeout = 25
conn.Provider = "sqloledb"
conn.Properties("data source").Value = Cip '服务器的名字
conn.Properties("initial catalog").Value = "pubs" '库名
'conn.Properties("integrated security").Value = "SSPI" '登陆类型
conn.Properties("user id").Value = users 'SQL库名
conn.Properties("password").Value = pw '密码
'sql = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=;Initial Catalog=pubs;Data Source=127.0.0.1" '如果不用这个模块也行可以,这一句便是常用的引擎。
'conn.ConnectionString = sql
conn.Open
OpenCn = True
If conn.State = 1 Then addFlag = True
Exit Function
strerrmag:
mag = "Data can't connect"
Call MsgBox(mag, vbOKOnly, "Error:Data connect")
addFlag = False
Exit Function '连接错误消息
End Function
'关闭数据库,释放连接
Public Sub cloCn()
On Error Resume Next
If conn.State <> adStateClosed Then conn.Close
Set conn = Nothing
End Sub
Public Function openRs(ByVal strsql As String) As Boolean '连接数据库记录集
Dim mag As String
Dim rpy As Boolean
On Error GoTo strerrmag
Set rs = New ADODB.Recordset
If addFlag = False Then rpy = True
With rs
.ActiveConnection = conn
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open strsql
End With
addFlag = True
openRs = True
'End '将记录集给rs
Exit Function
strerrmag:
mag = "data not connect"
Call MsgBox(mag, vbOKOnly, "error:connect")
openRs = False
End
'Exit Function '连接错误消息
End Function
Public Sub cloRs()
On Error Resume Next
If rs.State <> adStateClosed Then rs.Clone
Set rs = Nothing '释放记录集
End Sub
把它放入到模块文件中,以备调用。
三:下面两图是模块的代码图片和窗体的代码图片
Private Sub Command1_Click()
a = Trim(Text1.Text)
b = Trim(Text2.Text)
c = Trim(Text3.Text)
Call OpenCn(a, b, c)
If addFlag = True Then MsgBox ("OK")
Call openRs("select * from jobs")
Set DataGrid1.DataSource = rs
'rs.Close
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
四:运行时的图片(下面两图)到了这一步,一个简单的VB连接SQL的例子就完成了。