首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

为什么不能连接数据源解决办法

2012-03-28 
为什么不能连接数据源我用ODBC数据管理器创建了一个系统DSN(名为:SQLPERSON_TEST). 在VF6中用使用以下命令

为什么不能连接数据源
我用ODBC数据管理器创建了一个系统DSN(名为:SQLPERSON_TEST). 在VF6中用使用以下命令不能连接
handlestring="driver={Microsoft SQL Server};dsn=SQLPERSON_TEST"
handle=SQLSTRINGCONNECT(handlestring)

另外,如果远程的计算机能不能访问这个数据源?怎样编写代码??

请高手指点



[解决办法]
SQLSTRINGCONNECT( ) 函数 用法(来自 VFP 自带帮助文件)
用连接串建立和数据源的连接。

 
SQLSTRINGCONNECT([lShared] | [cConnectString [, lSharable]])
 

参数
lShared 

指定是否建立一个共享连接。 lShared 说明 
False (.F.)
 SQLSTRINGCONNECT( ) 不建立共享连接 (默认)。
 
True (.T.)
 SQLSTRINGCONNECT( ) 建立一个共享连接。
 

cConnectString 

指定一些 ODBC 驱动程序需要的数据源连接字符串,Visual FoxPro 将该连接字符串传递给 ODBC 驱动程序。有关数据源连接字符串的详细内容,请参阅 ODBC 驱动程序的文档。也可以从 选择连接或数据源对话框 选择一个数据源, 它在你不带 cConnectString 参数调用 SQLSTRINGCONNECT( ) 时出现。 
lSharable 

指定 cConnectString 中指定的数据源是否有一个共享连接。 
返回值
数值型。如果成功连接到数据源上,SQLSTRINGCONNECT() 返回一个正的、非零的语句句柄。如果不能连接 SQLSTRINGCONNECT( ) 返回 -1。

提示: 
应该将这个语句句柄存入一个内存变量,在随后需要连接句柄的函数调用中使用该变量。
  

说明
SQLCONNECT( ) 和 SQLSTRINGCONNECT( ) 函数返回一个数值型的语句句柄值而不是连接句柄。不能直接获取一个连接句柄。仍然可以为此连接传递语句句柄和串 "Shared" 为表达式而用 SQLSETPROP( ) 和 SQLGETPROP( ) 函数设置和获取连接属性。所有其它的 SQL 函数用语句句柄代替连接句柄。

SQLSTRINGCONNECT( ) 总是在它成功连接后创建一个新的连接。但是, 设置 lShared 参数来确定你是否可以在稍后共享此连接。如果你设置 lShared 为 True (.T.) 来指定连接为可共享的, 你可以有稍后调用 SQLCONNECT( ) 并传递数值型的连接句柄值为第一个参数来共享此连接。更详细的信息,请参见 SQLCONNECT( ) 函数。


可以用 SQLCONNECT( ) 在一个用 SQLSTRINGCONNECT( ) 打开的共享的连接上来获取一个新的语句句柄。

示例
示例 1

以下示例假定名为 MyFoxSQLNT 的 ODBC 数据源存在并可用。SQLSTRINGCONNECT( ) 返回一个数值型的值, 它保存在名为 gnHandle 的变量中。

如果成功地连接到了数据源, SQLSTRINGCONNECT( ) 返回一个正的数值, 一个对话框显示出来, 并且 SQLDISCONNECT( ) 被调用来从数据源断开。

如果不能连接到数据源, SQLSTRINGCONNECT( ) 返回一个负数并显示信息。


STORE SQLSTRINGCONNECT('dsn=MyFoxSQLNT;uid=myUserID;pwd=myPassword')
TO gnConnHandle
IF gnConnHandle < 0
= MESSAGEBOX('Cannot make connection', 16, 'SQL Connect Error')
ELSE
= MESSAGEBOX('Connection made', 48, 'SQL Connect Message')
= SQLDISCONNECT(gnHandle)
ENDIF
 

示例 2

以下示例展示如何不带数据源名地调用 SQLSTRINGCONNECT( ) 函数。

lcDSNLess="driver = SQL Server;server=<servername>;uid=<userid>;pwd=<password>"

-或者-
lcDSNLess="driver = {SQL Server};server=<servername>;uid=<userid>;pwd=<password>" 
 
-或者-
lcDSNLess="DRIVER = {SQL Server};" ; 
+ "SERVER=<servername>;" ;
+ "UID=<userid>;" ;
+ "PWD=<password>;" ;
+ "DATABASE=PUBS;" ;
+ "WSID=<machine name or userid>;" ;
+ "APP=MicroX(R) Sample App"
lnConnHandle=SQLSTRINGCONNECT(m.lcDSNLess)
 

示例 3

以下各示例创建一个新的共享连接。在第一个语句中, 选择连接或数据源对话框 显示出来且 SQLSTRINGCONNECT( ) 创建一个共享连接。

SQLSTRINGCONNECT(.T.)
SQLSTRINGCONNECT('myConnectionString', .T.)
 

[解决办法]
另外你说的远程计算机:如果你的远程计算机与你的机是联通的,那就可以

如连接 SQL Server 的连接串:

handlestring="DRIVER=Sql Server;SERVER=计算机名或IP地址;UID=用户名;PWD=密码;DATABASE=数据库名;Network=DBMSSOCN;Address=计算机名或IP地址,1433"

handle=Sqlstringconnect(handlestring)

热点排行