【求助】用VB6连接数据库报错。
vb吧
全部回复
仅看楼主
level 2
BigFoolCattle 楼主
环境:
系统:WINDOWS SERVER2012 R2
远程数据库ORACLE 19C
本地ORACLE(安装管理员-带有客户端):12C
数据库名:ORADB (ODBC测试可以连接数据库)
用户名和密码:oraora/oraora
以下是VB的代码,在OPEN时出错。
Set conn_mail = New ADODB.Connection
With conn_mail
.ConnectionTimeout = 500
.ConnectionString = "provider=MSDAORA;Data Source=ORADB;Password=oraora;User ID=oraora" '通过OLEDB建立与数据库的连接
.Open
End With
2021年06月07日 09点06分 1
吧务
level 13
Private Sub 数据填表()
Dim cn As Object, rs As Object
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
' 构成数据库文件连接命令字符串
Dim DbPw As String
Dim DbUser As String
Dim FileName As String
Dim cLink As String ' 连接字符串
Dim cSQL As String ' SQL 命令字符串
DbPw = "密码"
DbUser = "用户号"
FileName = "数据库文件名"
cLink = "Provider = MSDAORA.1; Password = DbPw
cLink = cLink & "; User ID = " & DbUser
cLink = cLink & "; Data Source = " & FileName
cLink = cLink & "; Persist Security Info = True"
' 构成【SQL-Select】命令字符串
cSQL = "Select * From 表名"
' 连接并打开数据库表
cn.Open cLink
rs.Open cSQL, cn, 1, 3
' 将数据填表并刷新表格控件
Set MSHFlexGrid1.DataSource = rs
MSHFlexGrid1.Refresh
End Sub
2021年06月07日 13点06分 3
看看还有哪些工作没有做到位!
2021年06月07日 13点06分
您好,非常感谢您的回复,我仔细看了,我的错误不在说代码上的错,而是为什么VB6自动无法认到ORACLE的客户端口。ODBC是说明数据库是可以正常连接的。客户端本身没有问题。但是VB6在OPEN的时候却无法找到对应的客户端。
2021年06月08日 01点06分
不能找到对应的【客户端】这个说法有问题。因为你是从客户端去找数据服务器上的数据库表。如果服务器本身没有给你放权,你当然不能打开数据服务器上的数据库表。还有,你的连接命令似乎不完善。
2021年06月09日 00点06分
F/S 构架的数据服务系统,并不是把数据库表存放在客户端上的,所以,没有【找不到客户端】这样的说法。只有【客户端(VB)程序】去打开【数据服务器】上的数据库表。
2021年06月09日 00点06分
吧务
level 13
  如果原来用这个程序就可以打开数据库,现在由于更换了操作系统就不能打开数据库了,多与【操作管理权限】有关,这是网络操作系统的一些设置问题,与应用程序没有什么关系。
2021年06月09日 16点06分 4
提供的程序代码本来都不完善,就是这些代码原来真的可以打开远程数据库吗?提供的程序代码中【OPEN】命令的 SQL 语句在哪里?
2021年06月09日 17点06分
您好,LUNIX 服务器 是数据库所在的服务器, 原来VB程序是在WINDOWS SERVER2003上的(应用服务器) 后来因为应用服务器升级,换成了 WINDOWS SERVER 2012 R2 所以我就把原来的 VB程序COPY到了新的WINDOWS SERVER 2012 R2上了。 下面是我的原代码,感谢您的帮助
2021年06月10日 03点06分
level 2
BigFoolCattle 楼主
完整代码
Private Sub 连接_Click()
Dim conn_mail As ADODB.Connection ' 利用ADO访问数据库
Dim rst_mail As ADODB.Recordset
Dim ssql As String
Set conn_mail = New ADODB.Connection
With conn_mail
.ConnectionTimeout = 500
.ConnectionString = "provider=MSDAORA;Data Source=ORADB;Password=oraora;User ID=oraora" '通过OLEDB建立与数据库的连接
.Open ‘这一步出的错
End With
Set rst_mail = New Recordset
ssql = " select * from oraora.oraora_v "
rst_mail.Open ssql, conn_mail, adOpenKeyset, adLockOptimistic
rst_mail.MoveFirst
End Sub
2021年06月10日 03点06分 6
【.Open ConnectionString】
2021年06月10日 17点06分
密码和 ID 都是【oraora】,这个字符串应该有双引号【引】起来哟。也就说你的连接字符串有问题。
2021年06月10日 17点06分
我在上面将【数据库文件名、ID 号、密码】都是用变量表示的。连接字符的等号后面应该是变量,如果直接写字符串,那就要加英文的双引号。
2021年06月10日 17点06分
吧务
level 13
.ConnectionString = "provider = MSDAORA; Data Source = " & "ORADB" & "; Password = " & "oraora" & "; User ID = " & "oraora"
2021年06月10日 17点06分 7
就算是这样,你也不可能打开数据库。因为你的【ID号】中根本不包括远程数据库的存放路径。
2021年06月11日 00点06分
还有,Linux 数据服务器为你这个新安装的 Windows 操作系统的机子,给了操作权限没有?
2021年06月11日 00点06分
你这是一整套的问题,并不简单是一个【原来可以打开,现在重装系统后就不能打开】的问题。就是你提供的【完整代码】,也不可能打开远程的【ORACLE】数据库。因为你的打开命令字符串【.Open. ……】都不完整!
2021年06月11日 00点06分
最简单的办法就是【恢复原来的操作系统版本】试试,是不是真的可以打开远程Linux 数据服务器上的【ORACLE】数据库!!!
2021年06月11日 00点06分
1