小弟的程序中有以下连接数据库的代码:
Private Sub connSer_Click()servName = loginSer.servName.Text
userName = loginSer.userName.Text
userPwd = loginSer.userPwd.Text
dbName = loginSer.dbName.TextSet cn = New ADODB.Connection
cn.ConnectionString = "Driver={SQLServer};Server=" & servName & ";UID=" & userName & ":PWD=" & userPwd & ";Database=" & dbName
cn.Open
Set rst = New ADODB.Recordset
Set rst = cn.Execute("SELECT * FROM GPSInfo")
While Not rst.EOF()longitude = rst!longitude
latitude = rst!latitude
speed = rst!speed
rst.MoveNext
WendEnd SubservName,userName,userPwd,dbName是四个申明为public的string.loginSer是另外一个窗体.主要功能就是从loginSer这个窗体中的四个文本框取出填入的信息,然后再用这些信息来连接数据库.这几个string都能取得正确的值,但是连接数据的时候却出现:未发现数据源名称并且未指定默认驱动程序的错误.如果我把cn.ConnectionString = "Driver={SQLServer};Server=" & servName & ";UID=" & userName & ":PWD=" & userPwd & ";Database=" & dbName这句代码改成cn.ConnectionString = "DSN=GIS;UID=sa;PWD="的话,是可以取到数据库中正确的值.但是老是报错说为指定默认驱动程序.我该怎么办啊?!各位老大救救小弟吧!

解决方案 »

  1.   

    如果loginSer是关闭的情况下是不能取到它控件上面的值的,你可以把loginSer控件中的值保存public的变量中就可以取了connectionstring 改为 Provider=SQlOLEDB试一下
      

  2.   

    cn.ConnectionString= "Provider=SQLOLEDB.1;SERVER=" & ServerName & ";DATABASE=" & DatabaseName & ";UID=" & UserName & ";PWD=" & Password
      

  3.   

    Driver={SQL Server},两者间有个空格
    最好用Provider,不要用Driver
      

  4.   

    感谢楼上各位老大的指导.确实是由于在driver中少了个空格的原因而导致的错误.但是奇怪的是我把空格加上后却出现:用户 'sa:PWD='登录失败的对话框!可是明明我的数据库连接的时候不需要密码啊?!而且使用cn.ConnectionString = "DSN=GIS;UID=sa;PWD="这一句的时候也没有使用到密码不也是可以访问的吗?这是怎么回事了?!
      

  5.   

    我简直要抓狂了.现在使用cn.ConnectionString = "DSN=GIS;UID=sa;PWD="也取不到数据库的数据了!报错为:未发现数据源名称并且为指定默认驱动程序!