vb访问sql数据库
本文讨论了Visual Basic应用程序访问SQL Server数据库的几种常用的方法,分别说明了每种方法的内部机理并给出了每种方法的一个简单的实例,最后比较了每种方法性能和优缺点。
一、引言
SQL Server是微软推出的中小型网络数据库系统,是目前最常用的数据库系统之一。随着SQL Server网络数据库应用程序日益增多,这种Web数据库应用系统的正常运行一般依赖于已存在的用户数据库。创建维护数据库的工作可用SQL Server提供的SQL EntERPrise Manager工具来进行,如能提供一种定制的数据库管理工具,通过管理应用程序来管理数据库及其者大设备,对用户来说无疑是最理想的。
Visual Basic作为一种面向对象的可视化编程工具,具有简单易学,灵活方便和易于扩充的特点。而且Microsoft为其提供了与SQL Server通信的API函数集及工具集,因此它越来越多地用作大型公司数据和客户机—服务器应用程序的前端,与后端的Microsoft SQL Server相结合,VB能够提供一个高性能的客户机—服务器方案。
二、VB访问SQL Server数据的常用方法
使用Visual Basic作为前端开发语言,与SQL Server接口有几种常用的方法,即:
①数据访问对象/Jet
②为ODBC API编程
州嫌慧③使用SQL Server的Visual 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的过程如下:应用程序准备好语句并送至Jet,Jet引擎(MASJT200.DLL)优化查询,载入驱动程序管理器并与之通讯,驱动程序管理器(ODBC.DLL)通过调用驱动器(SQLSRVR.DLL)的函数,实现连接到数据源,翻译并向SQL Server提交SQL语句且返回结果。下面是一个用DAOs访问SQL Server的VB实例。
注释:Form Declarations
Dim mydb As Database
Dim mydynaset As Dynaset オ
Private Sub Form_Load()
Set mydb = OpenDatabase("", False, False, "ODBC; DSN=Myserver; WSID=LCL; DATABASE = sales")
Set mydynaset = mydb CreateDynaset("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 integer
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))
B. vb用ado连接sql数据库(vb与sql数据库连接)
在VB中使用ADO
在程序设计中,ADO不是作为可视化的控件来使用的,如果要在应用程序中使用ADO组件,需要在"工程"菜单下的"引用"项中选该组件!该组件名称为:"MircrosoftActiveXDataObject2.0Library"(注:可能有2.52.6或者其他版本)
3- 使用ADO访问数据库类似于高速公路,首先,必须先修好公路,建立城市与城市间的连接,汽车才能在上面运行,ADO首先也需要建立程序与数据库间的连接,然后在这个连接上执行操作. 因此ADO提供了一个连接对象,该对象负责建立与数据库的连接,因此提供了一些属性以供设置,同时也提供了建立连接的方法与相应连接相关的事件! 连接建立之后,连接对像本身也提供了数据库执行操作的方法,但要更强有力的执行SQL的功能要由另一个命令对象来实现. 此外,一个非常重要的对象是记录集对像,因为在很多时候,需要执行数据库的查询,而查询的结果返回必须以某个容器来承载,就好比高速公路运送回来的货物需要建立一个物资仓库来进行货物的接收和储存. 还需要注意的是,要求程序与数据库之间断开连接. 连接对象,命令对象,和记录集对象分别对应ADO的Connection,Command,和Recordset三个对象 4- 1.连接对象(Connection)的主要属性 属性名称属团改性说明 Provider指定要进行连接的提供程序的名称,该属性标识要进行数据连接的数据库类型 设置或者返回产生错误之前执行命令期间需等待的时间,单位为秒 设置或者返回产生错误前建立连接期间所等待的时间,单位为秒 设置建立到数据源的连接的信息,不同的信息单元以";"号分割 State说明当前碰档连接的状态信息 主要属性说明: A.Provider 用Provider属性可以设置或返回连接提供者名称,也可以通过属性的内容或open方法的参数设置该属性 例如:Con.Provider="Microsoft.Jet.OLEDB.3.51" Con.Provider="sqloledb" 分别表示aess与SqlServer的连接支持! B. 例如,可以按以下方式分别设置SQLServer与Aess的连接字符串信息 Con.="driver={SQLServer};server=SV1;uid=sa;pwd=;database=pubs" Con.="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:.MDB" 请注意Aess数据库与SqlServer数据库不同的连接方式,Aess数据库需要指定具体的文件名,而SqlServer通过指定数据库名来访问 连接方式可以笑或乱还可以是数据源,例如,可以使用建立的数据源连接: Con.="DSN=ACCPSQL;server=SV1;uid=sa;pwd=;" C.State 该属性是只读的,不能进行设置,返回值为常数表示连接已关闭,返回值adStateOpen常数表示连接是打开的 附:ProviderParameters参数 提供程序参数字符串 MicrusoftJetMicrosoft.Jet.OLEDB.3.51 OracleMSDAORA MicrosoftODBCDriverMSDASQL SQLServerSQLOLEDB C. VB怎么连接 SQL 数据库
一个简单的方法: D. vb的sql数据库连接
先建一个工程,建立一个form1,form1中的代码如下: E. vb怎么连接sql
在窗体上添加adodc控件 F. 请问VB编程中,如何连接SQL数据库 1、打开代码窗口,添加引用:梁码Imports System.Data.SqlClient。 G. VB6.0 如何连接SQL 数据库
你在SQL SERVER中新建一个数据库,然后将这个数据库生成脚本文件,根据情况修改后转存为MASTER下的一个存储过程。至于数据库名和数据文件路径可以做成参数传入,然后在VB中用连到MASTER后执行这个存储过程。
首先,建立程序公共模块输入以下代码:
Public conn As New ADODB.Connection
'全局变量 rst 指针
Public rst As New ADODB.Recordset
'全局调用函数 打开数据库
Public Function openconn()
conn.ConnectionString = "连接信息"
'此连接信息最简单的生成办法:
'在任意窗口下建立一新ADODC控件
'选择控件属性,通用页,使用连接字符串,生成(U)
'利用该向导生成出字符串,然后将该字符串复制到"连接信息"中即可
conn.Open
End Function
'全局调用函数 关闭数据库
Public Function closeconn()
If conn.State = 1 Then
conn.Close
Set conn = Nothing
End If
End Function
然后在窗体文件中可以使用的函数:
打开数据库:openconn
注意:此函数为自定义函数,无参数,定义在公共模块中!
建立数据表连接:Set rst = conn.Execute("select * from 数据表名")
如做登陆页可以这样判断用户名密码:
Text1.Text = RTrim(rst.Fields("id")) And Text2.Text = RTrim(rst.Fields("password"))
注:其中Text1.Text为输入用户名TextBOX Text2.Text为输入密码TextBOX
数据表中 id 为保存用户名 password 为保存密码!此方法为非加密方法!
关闭数据库函数:
closeconn
Set rst = Nothing
注:此两行,必须在打开数据库的情况下使用!并且每打开一次数据库后必须先使用此两句将数据库关闭后才可打开另一数据库表文件!!!!!否则程序报错终止!
添加新数据函数
rst.AddNew
rst("字段名1") = Text1.Text
rst("字段名2") = Text2.Text
rst.Update
删除数据函数
rst.Delete
注:使用此函数前,必须保证数据库指针函数rst指向需删除数据,移动rst指针可以使用函数:rst.MoveNext或rst.MoveLast
更新数据函数
rst.Open "update 数据表名 set 字段1='" + Text1.Text + "',字段2='" + Text2.Text + "' where id='" + Text3.Text + "'", conn, 1, 3
注,其中 where id = 为更新特定数据表的查找!
如果熟悉SQL语句,还可编写出其他方式的查找,这里就不多做介绍了!
Dim rsNew As ADODB.Recordset
Dim CnNew As ADODB.Connection
Dim wsh As New WshShell
Dim serverlink As String
Private Sub Command1_Click()
Dim Mag As String
On Error GoTo strErrMag
Set CnNew = New ADODB.Connection
Set wsh = New WshShell
Text1 = wsh.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\ZJRB\SERVERNAME")
Text3 = wsh.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\ZJRB\PWD")
Text2 = wsh.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\ZJRB\USENAME")
serverlink = "Provider=SQLOLEDB.1;Password=" + Trim(Text3.Text) + ";Persist Security Info=True;User ID=" + Trim(Text2.Text) + ";Initial Catalog=master;Data Source=" + Trim(Text1.Text)
CnNew.Open serverlink
Exit Sub
strErrMag:
Mag = "数据库连接错误,在下列的窗体中请输入正确的信息!"
MsgBox Mag, vbOKOnly, "错误:数据库连接"
Me.Enabled = False
Load Form2
Form2.Show
End Sub
再建一个form2,form2的代码如下:
Dim rsNew As ADODB.Recordset
Dim CnNew As ADODB.Connection
Dim wsh As New WshShell
Dim serverlink As String
Private Sub Command1_Click()
Dim Mag As String
On Error GoTo strErrMag
Set CnNew = New ADODB.Connection
Set wsh = New WshShell
serverlink = "Provider=SQLOLEDB.1;Password=" + Trim(Text3.Text) + ";Persist Security Info=True;User ID=" + Trim(Text2.Text) + ";Initial Catalog=master;Data Source=" + Trim(Text1.Text)
CnNew.Open serverlink
MsgBox ("数据库连接成功!"), vbInformation + vbOKOnly, "提示信息"
Set CnNew = Nothing
wsh.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\ZJRB\SERVERNAME", Trim(Text1)
wsh.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\ZJRB\PWD", Trim(Text3)
wsh.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\ZJRB\USENAME", Trim(Text2)
Form1.Enabled = True
Unload Me
Exit Sub
strErrMag:
Mag = "数据库连接错误,在下列的窗体中请输入正确的信息!"
MsgBox Mag, vbOKOnly, "错误:数据库连接"
End Sub
试试看吧,这个把SQL的登录名与密码放在注册表中,同样也可以在注册表中放软件的试用期限!
鼠标右键-adodc属性-在通用选项卡里,点生成,选for
SQL
Server驱动程序-下一步-连接选项卡里
1.输入服务器名称,2.使用Windows
NT
集成安全设置。3.选择一个数据库
点测试连接,看看是否成功。按确定
点记录源选项卡,命令类型选8,命令文本(SQL)写:select
*
from
table1
确定,就连接到SQL数据库的表table1了。
Private
Sub
Command1_Click()
If
Not
Adodc1.Recordset.EOF
Then
Text1.Text
=
Adodc1.Recordset.Fields("line1")
End
If
End
Sub
用VB与建立的SQL数据库连接
1.使用ODBC DSN连接字符串
DSN=mySystemDSN;Uid=myUsername;Pwd=myPassword
----------------------------------------------
2.使用无ODBC DSN的连接字符串
(1)标准安全性
Driver={SQL Server};Server=MyServerName;DataBase=myDatabaseName; _
Uid=myUsername;Pwd=myPassword
------------------------------------------------
(2)信任连接(分两种)
1)连接字符串1
Driver={SQL Server};Server=MyServerName;DataBase=myDatabaseName;Uid=;Pwd=;
2)连接字符串2
Driver={SQL Server};Server=MyServerName;DataBase=myDatabaseName;Trusted_Connection=yes
---------------------------------------------------------------------------
(3)连接本地SQL SERVER
Driver={SQL Server};Server=(local);DataBase=myDatabaseName; _
Uid=myUsername;Pwd=myPassword
-------------------------------------------------------------
(4)连接远程SQL SERVER
Driver={SQL Server};Server=xxx.xxx.xxx.xxx; _
Address=xxx.xxx.xxx.xxx,1433; _
Network=DBMMSOCN;DataBase=myDatabaseName; _
Uid=myUsername;Pwd=myPassword
-------------------------------------------------------
3.使用OLEDB PROVIDER FOR SQL SERVER的连接字符串
(1)标准安全性
Provider=SQLOLEDB.1; _
Password=myPassword; _
User ID=myUsername; _
Initial Catalog=myDatabaseName; _
Data Source=MyServerName
-------------------------------------------
(2)信任连接
Provider=SQLOLEDB.1; _
Initial Catalog=myDatabaseName; _
Data Source=MyServerName; _
Integrated Security=SSPI
--------------------------------------
(3)连接到命名实例
Provider=SQLOLEDB.1; _
Initial Catalog=myDatabaseName; _
Data Source=myServerName\myInstanceName; _
Password=myPassword; _
User ID=myUsername
--------------------------------------
(4)连接到本地SQL SERVER
Provider=SQLOLEDB.1; _
Password=myPassword; _
User ID=myUsername; _
Initial Catalog=myDatabaseName; _
Data Source=(local)
-----------------------------------------
(5)连接到远程SQL SERVER
Provider=SQLOLEDB.1; _
Netwprk Library=DBMMSOCN; _
Data Source=xxx.xxx.xxx.xxx,1433; _
Password=myPassword; _
User ID=myUsername; _
Initial Catalog=myDatabaseName;