如何在程序里创建一个ODBC数据源

vcbacker 2003-06-24 12:19:24
我找了一些资料是访问access的,我想连接到SQL server,
用vc怎么做?
还是用SQLConfigDataSource吗?
还有问一下在程序里怎么判断数据源已经存在了?
...全文
53 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-06-24
  • 打赏
  • 举报
回复
Declare Integer SQLConfigDataSource In odbccp32 Integer, Integer, String, String
**上面这句是调用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
IamCxy 2003-06-24
  • 打赏
  • 举报
回复
以下是VFP的,原理一樣吧
===========================================

public lnWindowHandle
public lcODBCDriver
public lcODBCName
public lcODBCDesc
public lcODBCServer
public lcODBCDatabase
public lcUserName
public lcPassword
public lnHandle

lnWindowHandle=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
vcbacker 2003-06-24
  • 打赏
  • 举报
回复
多谢二位。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧