VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1269|回复: 7

[求助] SQLConfigDataSource如何链接VF数据库

[复制链接]
71_avatar_middle
在线会员 发表于 2016-3-3 18:55:53 | 显示全部楼层 |阅读模式
3驿站币
各位大侠,我参照网上的贴子使用SQLConfigDataSource动态配置ODBC数据源(网上用的是Access数据库),但是当我改成VF数据库驱动时就无法配置了,求解,如下代码:
CString appPath;
        GetModuleFileName(NULL, appPath.GetBuffer(MAX_PATH), MAX_PATH);
        appPath.ReleaseBuffer();
        int n = appPath.ReverseFind('\\');
        CString helpFile = appPath.Left(n);
        char c = helpFile.GetAt(n - 1);
        if(c == '\\')
                helpFile = helpFile +"shuju\\超市.dbc";
        else
                helpFile = helpFile +"\\shuju\\超市.dbc";
       
        //ODBC name ;
        CString name = "chaoshi" ;
        CString path = helpFile ;
        MessageBox(helpFile);
        char* szDesc;
        int mlen;
        szDesc=new char[256];
        sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s? FIL=MicrosoftFoxPro? DEFAULTDIR=c:?? ",name,path);
        mlen = strlen(szDesc);
        for (int i=0; i<mlen; i++)
        {
                if (szDesc[i] == '?')
                        szDesc[i] = '\0';
        }
        if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Visual FoxPro Driver\0",(LPCSTR)szDesc))
        {
               
                MessageBox("ODBC数据源创建失败!\n系统不能启动!","提示",MB_OK);
                delete []szDesc ;
        }
        else
        {
                MessageBox("ODBC数据源创建成功!","信息",MB_OK);
                delete []szDesc ;
        }





上一篇:最简单的求最大公约数的代码不能运行
下一篇:启动 QQ
53_avatar_middle
在线会员 发表于 2016-3-4 08:09:37 | 显示全部楼层
本帖最后由 xieglt 于 2016-3-4 08:13 编辑

我的属性字符串写法:DSN=%s;UID=;PWD=;DBQ=%s;READONLY=FALSE;EXCLUSIVE=TRUE;
你为什么要用 “?”  作为属性字符串的分割符呢?
然后还加上了这么一段

        for (int i=0; i<mlen; i++)
        {
                if (szDesc == '?')
                        szDesc = '\0';
        }

这循环执行后 szDesc 的值是 “chaoshi”

怎么可能配置成功?
71_avatar_middle
ico_lz  楼主| 发表于 2016-3-4 10:09:43 | 显示全部楼层
xieglt 发表于 2016-3-4 08:09
我的属性字符串写法:DSN=%s;UID=;PWD=;DBQ=%s;READONLY=FALSE;EXCLUSIVE=TRUE;
你为什么要用 “?”  作为 ...

可以成功,用ACCESS数据库成功了,但是改成VF数据库时不成功
71_avatar_middle
ico_lz  楼主| 发表于 2016-3-4 10:24:04 | 显示全部楼层
本帖最后由 zzw843 于 2016-3-4 10:26 编辑
zzw843 发表于 2016-3-4 10:09
可以成功,用ACCESS数据库成功了,但是改成VF数据库时不成功


我按你的方法改了一下,配置还是不成功,但是如果把“;”改为“\0”配置成功,但是配置数据源里没有路径…………
53_avatar_middle
在线会员 发表于 2016-3-4 10:30:00 | 显示全部楼层
zzw843 发表于 2016-3-4 10:24
我按你的方法改了一下,配置还是不成功,但是如果把“;”改为“\0”配置成功,但是配置数据源里没有路 ...

你在配置之前把 szDesc 打印出来,仔细检查下
TRACE("%s\n",szDesc);
71_avatar_middle
ico_lz  楼主| 发表于 2016-3-4 11:35:34 | 显示全部楼层
xieglt 发表于 2016-3-4 10:30
你在配置之前把 szDesc 打印出来,仔细检查下
TRACE("%s\n",szDesc);

打印出来就是只剩DNS了,其他数据传送不过去????但是为什么ACCESS就可以呢………………
71_avatar_middle
ico_lz  楼主| 发表于 2016-3-4 16:28:12 | 显示全部楼层
本帖最后由 zzw843 于 2016-3-4 16:38 编辑
zzw843 发表于 2016-3-4 11:35
打印出来就是只剩DNS了,其他数据传送不过去????但是为什么ACCESS就可以呢………………


我测试了一下,如果没有DBQ或DBQ为空就可以创建成功,但是数据源没有路径,如果添加了DBQ就失败。
71_avatar_middle
ico_lz  楼主| 发表于 2016-3-4 18:32:58 | 显示全部楼层
xieglt 发表于 2016-3-4 08:09
我的属性字符串写法:DSN=%s;UID=;PWD=;DBQ=%s;READONLY=FALSE;EXCLUSIVE=TRUE;
你为什么要用 “?”  作为 ...

我测试了一下,如果没有DBQ或DBQ为空就可以创建成功,但是数据源没有路径,如果添加了DBQ就失败。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-3-21 16:42

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表