VB6连SQL2000数据库,连接字符串,奇怪问题
单位局域网,有两台服务器FUWU1和WEB2,两服务器上都有一个一模一样的数据库XCQK,现在在局域网内客户端上存取服务器数据。程序中的DTPicker1是日历控件,下面...
单位局域网,有两台服务器FUWU1和WEB2,两服务器上都有一个一模一样的数据库XCQK,现在在局域网内客户端上存取服务器数据。程序中的DTPicker1是日历控件,下面是部分过程的代码:
Option Explicit
Dim myCnn As New ADODB.Connection
Dim myRs As New ADODB.Recordset
Dim myStr As String ‘连接字符串
Private Sub Form_Load()
'下面是远程连接FUWU1服务器
myStr = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog= XCQK;Data Source=FUWU1"
myCnn.ConnectionString = myStr
myCnn.Open
myRs.Open "select max(日期) from 日报", myCnn, adOpenStatic, adLockReadOnly
…………
myRs.Close
myCnn.Close
End Sub
Private Sub DTPicker1_Change()
myCnn.Open
myRs.Open "select * from 日报 where 日期='" & DTPicker1.Value & "'", myCnn, adOpenStatic, adLockReadOnly
…………
myRs.Close
myCnn.Close
End Sub
Private Sub CmdEnd_Click()
Set myRs = Nothing
Set myCnn = Nothing
End
End Sub
上面的程序能正常操作数据库中的数据,存、取、删,都没问题。
当我将Form_Load过程中的连接字符串替换为下面的代码后(其余的代码一点都没改),Form_Load过程能运行,并读出了数据库中的数据,但在日历控件DTPicker1过程里却提示“用户xxxx登录失败”:
'下面是远程连接WEB2服务器
myStr="Provider=SQLOLEDB.1;Persist Security Info=False; User ID=xxxx;Password=1234;Initial Catalog=XCQK;Data Source=WEB2"
后来稀里胡糊涂地在DTPicker1过程里myCnn.Open的前面补了一行:
myCnn.ConnectionString = myStr
并在其余所有的myCnn.Open语句前面都补了这行之后程序才正常运行。请高手指点,这是为什么呀?
请注意修改之前的程序,DTPicker1过程里没有myCnn.ConnectionString = myStr,是因为连接字符串myStr 是在声明区中声明的,所以只在Form_Load过程中赋一次值,后面再打开数据库时不用再赋值。
两个连接字符串的区别:前一个是sa用户、空白密码,后一个是网管给我另建的用户,管理员权限。 展开
Option Explicit
Dim myCnn As New ADODB.Connection
Dim myRs As New ADODB.Recordset
Dim myStr As String ‘连接字符串
Private Sub Form_Load()
'下面是远程连接FUWU1服务器
myStr = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog= XCQK;Data Source=FUWU1"
myCnn.ConnectionString = myStr
myCnn.Open
myRs.Open "select max(日期) from 日报", myCnn, adOpenStatic, adLockReadOnly
…………
myRs.Close
myCnn.Close
End Sub
Private Sub DTPicker1_Change()
myCnn.Open
myRs.Open "select * from 日报 where 日期='" & DTPicker1.Value & "'", myCnn, adOpenStatic, adLockReadOnly
…………
myRs.Close
myCnn.Close
End Sub
Private Sub CmdEnd_Click()
Set myRs = Nothing
Set myCnn = Nothing
End
End Sub
上面的程序能正常操作数据库中的数据,存、取、删,都没问题。
当我将Form_Load过程中的连接字符串替换为下面的代码后(其余的代码一点都没改),Form_Load过程能运行,并读出了数据库中的数据,但在日历控件DTPicker1过程里却提示“用户xxxx登录失败”:
'下面是远程连接WEB2服务器
myStr="Provider=SQLOLEDB.1;Persist Security Info=False; User ID=xxxx;Password=1234;Initial Catalog=XCQK;Data Source=WEB2"
后来稀里胡糊涂地在DTPicker1过程里myCnn.Open的前面补了一行:
myCnn.ConnectionString = myStr
并在其余所有的myCnn.Open语句前面都补了这行之后程序才正常运行。请高手指点,这是为什么呀?
请注意修改之前的程序,DTPicker1过程里没有myCnn.ConnectionString = myStr,是因为连接字符串myStr 是在声明区中声明的,所以只在Form_Load过程中赋一次值,后面再打开数据库时不用再赋值。
两个连接字符串的区别:前一个是sa用户、空白密码,后一个是网管给我另建的用户,管理员权限。 展开
3个回答
展开全部
adodb.connection不open就是不连数据库,当然必须要open
如果连接2个数据库,用2个connection连接
如果连接2个数据库,用2个connection连接
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议直接写一个连接数据库的模块
连接的时候直接调用就可以了。
格式也统一了。也就不会出现上面的情况
连接的时候直接调用就可以了。
格式也统一了。也就不会出现上面的情况
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询