以下是VFP的,原理一樣吧
===========================================public lnWindowHandle
public lcODBCDriver
public lcODBCName
public lcODBCDesc
public lcODBCServer
public lcODBCDatabase
public lcUserName
public lcPassword
public lnHandlelnWindowHandle=0
lcODBCDriver='SQL Server' && DRIVER類型
lcODBCName='MyDB' && 數据源名字
lcODBCDesc='Data Source' && 數据源描述
lcODBCServer='Shared' && SQL SERVER名字
lcODBCDatabase='MyDB' && 要連接的數据庫名字
lcUserName="sa"
lcPassword="76577865"===========================================================DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRING
*先修改已有的ODBC,如果不存在,返回0。
lreturn=SQLConfigDataSource(lnWindowHandle, 2, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
if lreturn=0 &&不存在,添加新的ODBC
lreturn=SQLConfigDataSource(lnWindowHandle, 1, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
if lreturn==0 then
MessageBox('服務器連接失敗,請檢查網路是否連通或SQL Server是否已啟動',16,'警告')
return
endif
endif
lnHandle=SQLConnect("&lcODBCName","&lcUserName","&lcPassword")
if lnHandle<=0 then
MessageBox('服務器連接失敗,請檢查網路是否連通或SQL Server是否已啟動',16,'警告')
return
endif==================================================================*和服務器斷開連接
=SQLdisconnect(lnHandle)
*刪除ODBC數據源
lreturn=SQLConfigDataSource(lnWindowHandle, ;
2, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
if lreturn==1
*ODBC數據源存在,則刪除
lreturn=SQLConfigDataSource(lnWindowHandle,3, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
endif
===========================================public lnWindowHandle
public lcODBCDriver
public lcODBCName
public lcODBCDesc
public lcODBCServer
public lcODBCDatabase
public lcUserName
public lcPassword
public lnHandlelnWindowHandle=0
lcODBCDriver='SQL Server' && DRIVER類型
lcODBCName='MyDB' && 數据源名字
lcODBCDesc='Data Source' && 數据源描述
lcODBCServer='Shared' && SQL SERVER名字
lcODBCDatabase='MyDB' && 要連接的數据庫名字
lcUserName="sa"
lcPassword="76577865"===========================================================DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRING
*先修改已有的ODBC,如果不存在,返回0。
lreturn=SQLConfigDataSource(lnWindowHandle, 2, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
if lreturn=0 &&不存在,添加新的ODBC
lreturn=SQLConfigDataSource(lnWindowHandle, 1, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
if lreturn==0 then
MessageBox('服務器連接失敗,請檢查網路是否連通或SQL Server是否已啟動',16,'警告')
return
endif
endif
lnHandle=SQLConnect("&lcODBCName","&lcUserName","&lcPassword")
if lnHandle<=0 then
MessageBox('服務器連接失敗,請檢查網路是否連通或SQL Server是否已啟動',16,'警告')
return
endif==================================================================*和服務器斷開連接
=SQLdisconnect(lnHandle)
*刪除ODBC數據源
lreturn=SQLConfigDataSource(lnWindowHandle, ;
2, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
if lreturn==1
*ODBC數據源存在,則刪除
lreturn=SQLConfigDataSource(lnWindowHandle,3, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0))
endif
**上面这句是调用WINDOWS 的API函数,VFP本身的函数创建不了数据源,应该调用WINDOWS的。
lnWindowHandle=0 &&先给连接句柄定义一个值,为0。
lcODBCDriver='SQL Server' &&DRIVER类型,当然选SQL Server
lcODBCName='aaaaaa' &&要创建的数据源名字
lcODBCDesc='aaaaaa' &&数据源描述,可有可无的东西。
lcODBCServer='127.0.0.1' &&SQL SERVER名字----初始化中应该为变量,由用户从表单上输入,本模块的第一行即是接收这个参数的.
lcODBCdatabase='' &&要连接的数据库名字。lreturn=SQLConfigDataSource(lnWindowHandle, 2, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0);
+ 'Database=' + lcODBCdatabase + CHR(0)) &&检测是不是已经有ODBC数据源
If lreturn=0 &&如果没有检测到ODBC数据源
lreturn1=SQLConfigDataSource(lnWindowHandle, 1, lcODBCDriver, ;
'DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'Server=' + lcODBCServer + CHR(0);
+ 'Database=' + lcODBCdatabase + CHR(0)) &&如果创建失败
if lreturn1=0
=Messagebox('添加ODBC数据源失败!',16,'提示') &&错误处理
else
=Messagebox('添加ODBC数据源成功!',72,'提示')
endif
Else
=Messagebox('修改ODBC数据源成功!',72,'提示')
Endif