关于 连接 sql server 数据库的问题

spily365 2004-09-23 04:17:50
那位大虾能不能帮我讲讲ado怎样连接sql server 数据库。怎么总是连不上,要求详细。高分,最好给个例子。谢谢了。
...全文
149 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
RUKYO 2004-09-24
出现如下问题:难道我数据库装错了。
[microsoft][odbc sql server driver][dbnetlib] sql server 不存在或拒绝存取.

==================

'工程->引用Microsoft ActiveX Data Objects 2.x Library
Option Explicit
Public mCnnString As String

Private Sub Command1_Click()
Dim mRst As New ADODB.Recordset
Dim mCon As New ADODB.Connection

mCnnString = "driver={SQL Server};server=SHUAB;uid=sa;pwd=;ConnectionTimeout=0;database=Northwind"

mCon.Open mCnnString
mRst.CursorLocation = adUseClient
mRst.Open "Select * From Orders", mCnnString, adOpenStatic, adLockOptimistic, adCmdText
Set DataGrid1.DataSource = mRst
End Sub
回复
海洋微风 2004-09-23
//用户'sa'登陆失败,原因:未与信任 sql server 连接相关联.请问这是什么原因.

你的 Password 不对

/*Dim CN As New ADODB.Connection '定义数据库的连接
Dim Rs As New ADODB.Recordset
CN.ConnectionString = "Provider=sqloledb;Data Source=SHUAB;Initial Catalog=northwind;User Id=sa;Password=;"
CN.Open*/

这里的 Password 为空,检查你的数据库 SA 的密码是否为空.
回复
helanshan 2004-09-23
看你的服务管理器打开了没有????
回复
spily365 2004-09-23
Dim conn As New ADODB.Connection
With conn
If .State = adStateOpen Then .Close
.ConnectionString = "driver=SQL Server;server= SHUAB;uid=sa;pwd=;database=Northwind "
.Open
End With

出现如下问题:难道我数据库装错了。
[microsoft][odbc sql server driver][dbnetlib] sql server 不存在或拒绝存取.

回复
suxylin 2004-09-23
些个配置文件,要想怎么访问就怎么访问,那样不是更方便点。
回复
spily365 2004-09-23
Dim CN As New ADODB.Connection '定义数据库的连接
Dim Rs As New ADODB.Recordset
CN.ConnectionString = "Provider=sqloledb;Data Source=SHUAB;Initial Catalog=northwind;User Id=sa;Password=;"
CN.Open
我运行了一遍,出现如下错误:

用户'sa'登陆失败,原因:未与信任 sql server 连接相关联.请问这是什么原因.
回复
spily365 2004-09-23
程序如下:
Set cnn = New ADODB.Connection

If cnn.State = adStateOpen Then cnn.Close
With cnn
.Provider = "sqloledb"
.ConnectionString = "data source = shuab;initial catelog = Ticket;user id = sa; password ="
.Open

End With
MsgBox "connect the database"
但是还是连接不成功。
我想问的是,数据库名要全部路径吗?

回复
newwish2 2004-09-23
我有代码,现在拿不了,给我发信息吧,我再回!!
回复
cqm2099 2004-09-23
加个ADO控件
然后用猩猩们的代码实现!!
回复
lihonggen0 2004-09-23

工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)

Dim CN As New ADODB.Connection '定义数据库的连接
Dim Rs As New ADODB.Recordset
CN.ConnectionString = "Provider=sqloledb;Data Source=pmserver;Initial Catalog=northwind;User Id=sa;Password=xxx;"
CN.Open

请检查服务器名、数据库、用户名、密码是否正确,还有SQL SERVER的权限设置
CN.ConnectionString = "Provider=sqloledb;Data Source=服务器名;Initial Catalog=数据库;User Id=用户名;Password=密码;"


回复
sys9933 2004-09-23
VB访问数据库的方法与原则



  1.VB访问数据库的原则

  总则:具体问题具体分析,根据具体的环境、条件、要求而采用适当的方案

  *代码的重用和运行的效率

  例如:通过使用ODBC数据源连接数据库的方法,可在变换多种数据库类型的情况下,而不用频繁修改代码。用VBSQL通过DB-Library就做不到。而ODBC接口并不是VB访问数据库运行效率最高的方法。同样,同是使用ODBC接口的ADO的效率要高于RDO

  *实现的简便性,易维护性

  如果一种方法实现起来很复杂,工程的开发必然造成人力物力的浪费,同时这样设计出来的应用程序只会支持起来更复杂或维护时更困难。例如:本地需要访问ISAM或Jet类型数据源,那么就使用DAO/Jet,而没有必要使用通过ODBC的方法。RDC实现起来要较RDO更容易

  *安全性原则

  报这一条应根据环境和条件决定。例如局域网的网络安全性要好于广域网因而可直接利用数据控件如DC,这样实现起来方便快捷,而广域网需要大量的错误捕获,如用RDC就不如用RDO易控制错误。

  2.VB访问数据库的方法

  VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多方法。

  数据访问接口功能及含义:

  ADC:高级数据连接器(AdvancedDataConnector):提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLEDB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。

  ADO:Active数据对象(ActiveDataObjects):ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQLServer、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。

  DAO:数据访问对象(DataAccessObjects):是一种面向对象的界面接口。通过DAO/Jet功能可以访问ISAM数据库,使用DAO/ODBCDirect功能可以实现远程RDO功能。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同DDL(数据描述语言)的功能很类似。

  DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所需的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。

  JET:数据连接性引擎技术(JointEngineTechnology):是一种基于工作站通过DAO的数据库访问机制。虽然可以通过微软Access提供的ODBC驱动程序访问Jet数据库,但使用这些驱动程序在功能上有所限制。Jet机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。

  0DBC:开放式的数据库连接(OpenDatabaseConnectivity):是一种公认的关系数据源的接口界面。它快而轻并且提供统一接口的界面,ODBC对任何数据源都未作优化。

  ODBCDirect:是一种基于DAO对象的新的DAO模式,其方法和属性与RDO功能相同。使用在有DAO代码存在的场合,可用来访问远程数据源。

  OLEDB:是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO技术的应用程序或用于C++的开发者开发定制的数据库组件。OLEDB不能被VB直接调用。

  RDC:远程数据访问控件(RemoteDataControl):是一种对RDO数据绑定的控件。可以输出特定的结果集到数据源控件。

  RDO:远程数据对象(RemoteDataObjects):远程数据对象和集合为使用代码来创建和操作一个远程ODBC数据库系统的各个部件提供了一个框架。对象和集合都具有描述数据库的各个部件特征的属性以及用来操作这些部件的方法。可以在对象和集合之间建立起关系,这些关系就代表了数据库系统的逻辑结构。RDO是ODBCAPI的一个浅层界面接口。是专为访问远程ODBC关系数据源而设计的。

  VBSQL:是VisualBasic结构化查询语言。是一种基于API的接口方法,几乎与C的DB-LibraryAPI相同。VBSQL只支持微软的SQLServer。VBSQL快而且轻但不支持对象界面。

  使用RDO的一般方法如下。

  先声明变量:

  PublicconAsrdoConnection,resAsrdoResultset

  然后初始化rdoEngine,设置用户和口令等缺省参数;WithrdoEngine

  .rdoDefaultUser="sa"`用户为sa

  .rdoDefaultPassword="pass"`口令为pass

  .rdoDefaultCursorDriver=rdUseServer

  .rdoDefaultLoginTimeout=15

  EndWith

  再连接到要访问的远程数据库(可使用DSNConnection和DSN-LessConnection)。

  使用DSNConnection举例(连接服务器SERVER上的数据库hotel):

  Setcon=rdoEnvironments(0).OpenConnection

  ("hotel",rdDriverNoPrompt,False)

  使用DSN-LessConnection举例(连接服务器SERVER上的数据库hotel):

  Setcon=rdoEnvironments(0).OpenConnection

  ("",rdDriverNoPrompt,False,_"driver={SQLServer};server=SERVER;database=hotel")

  建立连接后,既可使用OpenResultset方法执行查询并处理结果集,又可使用Execute方法执行包括数据定义和数据操作在内的动作查询。例如:

  Setres=con.OpenResultset("SELECT*FROMmenu",rdOpenStatic)

  con.Execute"CREATEVIEWmenu_viewASSELECT代码,菜名FROMmenu",rdExecDirect

  RDO最强大和最重要的特性之一是:它可以查询和处理由存储过程返回的结果,无论它有多么复杂。

  除RDO外,还可使用RDC访问远程数据库。

  远程数据控件(RDC)与数据控件(DC)类似,不同之处是RDC使用RDO连接到ODBC驱动程序管理器,而DC则使用DAO连接到Jet数据库引擎。利用RDO和RDC,无需使用Jet引擎就可以访问ODBC数据源。这样,在访问远程数据库时,可以获得更好的性能和更大的灵活性。

  远程数据控件MSRDC使用举例如下。

  Connectriver={SQLServer};server=SERVER;database=hotel

  DataSourceName:

  SQL:SELECT*FROMmenu

  UserNamea

  Passwordass

  CursorDriver:3-rdUseClient

  可以使用RDC执行许多简单的远程数据访问操作,不需编写任何代码,只要填写有关项就可以了,使用起来很方便。但应注意,除非在设计时禁止并只在需要时启动RDC,否则它至少将消耗一个远程数据库连接。在远程数据库连接资源有限或要求很高效的情况下,宜慎用、少用RDC。这种情况下,应尽可能考虑使用RDO,并使用存储过程(预编译好的SQL语句)。

  最后还应注意,只有32位操作系统(如WindowsNT或Windows95),才能支持RDO和RDC。RDO和RDC也只能用于访问32位ODBC数据源。
回复
ryuginka 2004-09-23
都有了,楼主,你的程序拿出来看看啊
回复
libingao 2004-09-23
'将以下函数加入你的程序模块,在程序中直接调用:

Public Function vConnection_ADO(adoCnn As ADODB.Connection, DataPathName As String, Optional userid As String, Optional PassWord As String, Optional ServerName As String, Optional nFlag As Integer = 0, Optional nWinntFlag As Boolean = True) As Boolean
'**************************************************************************************************
'功能:用 ADO 连接数据库(服务器),如果连接成功则返回 True 并且返回 adoCnn 连接对象供程序使用
'参数:当 nFlag = 0 时是连接 Access 数据库,DataPathName 为数据库名称路径
' 当 nFlag = 1 时是连接 SQL Server 服务器,ServerName为服务器名,DataPathName为数据库名称
' 当 nFlag = 2 时是连接 ODBC 数据源数据库,DataPathName 为数据源名称
' 当 nFlag = 1、2 时 nWinntFlag 启用:= True为系统集成安全访问,= False为用户名和密码访问
' 访问数据库的用户名和密码分别为:UserID 和 PassWord
'时间:2004 年 08 月 04 日 ALEX ADD
'**************************************************************************************************
On Error GoTo errHandlerr

Dim CnnStr As String

vConnection_ADO = False
If Trim(DataPathName) = "" Then
MsgBox "被连接的数据库名称为空,连接失败!", vbCritical, "数据库名不能为空 ..."
Exit Function
End If
If nFlag = 0 Then
CnnStr = "provider=Microsoft.Jet.OLEDB.4.0;Data source =" + DataPathName + " ;Persist Security Info=False;Jet OLEDB:Database Password=" + PassWord
ElseIf nFlag = 1 Then
If Trim(ServerName) = "" Then ServerName = "LIBINGAO" // 服务器名,可根据实际修改
If Trim(userid) = "" Then userid = "sa"
If nWinntFlag Then
CnnStr = "Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=" + DataPathName + ";Data Source=" + ServerName + "; Integrated Security=SSPI;"
Else
CnnStr = "Provider=SQLOLEDB.1;Persist Security Info=True; Initial Catalog=" + DataPathName + ";Data Source=" + ServerName + "; User ID=" + userid + ";Password=" + PassWord
End If
ElseIf nFlag = 2 Then
If Trim(ServerName) = "" Then ServerName = ""
If Trim(userid) = "" Then userid = "admin"
If nWinntFlag Then
CnnStr = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=" + DataPathName + ";Initial Catalog=" + ServerName '由于初始目录事先未知,故在此用 ServerName 置空
Else
CnnStr = "Provider=MSDASQL.1;Persist Security Info=True ;Data Source=" + DataPathName + ";Initial Catalog=" + ServerName + ";User ID=" + userid + ";Password=" + PassWord
End If
End If

With adoCnn
If .State = adStateOpen Then .Close
.ConnectionString = CnnStr
.Open ', , , adAsyncConnect ' 参数 adAsyncConnect 用于异步打开连接(不必等待),此时要用 WithEvents 关键字声明 adoCnn
If .State = adStateOpen Then ' 用 ADO 连接 指定数据库成功,函数返回 True 和 已连接好的 对象 adoCnn
vConnection_ADO = True
Else ' 用 ADO 连接 指定数据库失败,函数返回 False 并弹出报错对话框
errHandlerr:
If Trim(err.Description) <> "" Then
MsgBox err.Description + ":" + CStr(err.number) + vbCrLf + "用 ADO 连接数据库 < " + DataPathName + " > 失败,你可能不能正常使用当前功能界面!", vbCritical, "数据库连接发生错误 ..."
Else
MsgBox "用 ADO 连接数据库 <" + DataPathName + "> 失败,你可能不能正常使用当前功能界面!", vbCritical, "数据库连接发生错误 ..."
End If
End If
End With

End Function

回复
hsanzhang 2004-09-23
Private Sub Form_Load()
'首選引用ADO2.5或以上版本
'在菜單 'project-References...-Microsoft ActiveX Data Objects 2.5 Library

dim cn as new adodb.connection
if cn.state=adstateopen then cn.close
with cn
.provider="sqloledb"
.connectionstring="data source=你的Sql服務器;initial catalog=你的數據庫名稱;user id=sa;password=你的密碼"
.open
end with
msgbox "連上了數據庫"

End Sub
回复
饮水需思源 2004-09-23
dim conn as new adodb.connection
With conn
If .State = adStateOpen Then .Close
.ConnectionString = "driver=SQL Server;server=" & 服务器名或IP地址 & ";uid=sa;pwd=;database=" & 数据库名
.CommandTimeout = 300
.Open
End With
回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2004-09-23 04:17
社区公告
暂无公告