社区
数据库
帖子详情
菜鸟求救!
mishu
2004-03-25 04:57:56
我设置数据源,用SQLConfigDataSource(NULL,ODBC_ADD_DSN,_T("SQL SERVER"),a)。其中a是一字符串变量,如果不是UNICODE工程,就没有问题了。可是采用UNICODE工程,怎么修改才能通过编译啊?希望各位大侠指点迷津。
...全文
129
21
打赏
收藏
菜鸟求救!
我设置数据源,用SQLConfigDataSource(NULL,ODBC_ADD_DSN,_T("SQL SERVER"),a)。其中a是一字符串变量,如果不是UNICODE工程,就没有问题了。可是采用UNICODE工程,怎么修改才能通过编译啊?希望各位大侠指点迷津。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mishu
2004-04-23
打赏
举报
回复
cy214threadx:
还有你的GetPrivateProfileString函数为什么会有六个参数, path是哪儿来的?
DSN,Server,DB我是读取网络上的,所以有path了。这个函数没有问题,DSN,Server,DB我都获得了。我想和它是没有问题的吧?有什么高见?
showjancn
2004-04-09
打赏
举报
回复
补充一点:
CString类它本身就支持UNICODE
可使有 宏_T来操作。
例:CStrign str;
str = _T("....")
showjancn
2004-04-09
打赏
举报
回复
首先推荐吏用TCHAR(通用字符类型)。当定义了_UNICODE宏时,TCHAR就是WCHAR,当没定义这个宏的时候,tchar就是char。
所以你要适用UNICODE可加上宏#define _UNICODE
当然也可能通过函数来转换。
WideCharToMultiByte()和MultByteToWideChar()
cy214
2004-04-09
打赏
举报
回复
既然你说直接在函数里写字符串没事,那就在wcscpy(a, ss);以后设置断点, 看看a地址的内存实际内容, 是不是标准unicode.
还有你的GetPrivateProfileString函数为什么会有六个参数, path是哪儿来的?
mishu
2004-04-09
打赏
举报
回复
cy214(threadx:我在project settings中preprocessor definition里加了UNICODE,_UNICODE这是没有问题的。
mishu
2004-04-09
打赏
举报
回复
下面是我的代码:
CString m_DB;
CString m_Server;
CString m_DSN;
TCHAR tszBufferServer[100];
GetPrivateProfileString(_T("Data Config"),_T("Server"),_T(""),tszBufferServer,20,path);
m_Server = tszBufferServer;
UpdateData(FALSE);
TCHAR tszBufferDB[100];
GetPrivateProfileString(_T("Data Config"),_T("DataBase"),_T(""),tszBufferDB,20,path);
m_DB = tszBufferDB;
UpdateData(FALSE);
TCHAR tszBufferDSN[100];
GetPrivateProfileString(_T("Data Config"),_T("DSN"),_T(""),tszBufferDSN,20,path);
m_DSN = tszBufferDSN;
UpdateData(FALSE);
CString ss,sDSN=_T("DSN="),sServer=_T("SERVER="),sDataBase=_T("DATABASE=");
sDSN=sDSN+m_DSN;
sDSN += "\\0";
sServer=sServer+m_Server;
sServer += "\\0";
sDataBase=sDataBase+m_DB;
sDataBase += "\\0\\0";
ss=sDSN+sServer+sDataBase;//其中ss已读出是"DSN=Try2DSN\0Server=Whd\0Database=xsxl\0\0";
TCHAR a[300] ;
wcscpy(a,ss);
BOOL r = ::SQLConfigDataSourceW(NULL, ODBC_ADD_DSN,
_T("SQL Server\0"),a );
if(r)
AfxMessageBox(_T("ok"));
哪出错了?
cy214
2004-04-02
打赏
举报
回复
上面没说清楚 改一下:
两个宏(分别支持crt和win32sdk) 并且在所有#include前面.
引用了tchar.h(include).
cy214
2004-04-02
打赏
举报
回复
unicode编译时确定一下: 定义了
#define UNICODE
#define _UNICODE
两个宏(分别支持crt和win32sdk) 并且在所有#include前面, 引用了tchar.h(include). odbc那些头文件和库你应该都添加了
定义a的时候用TCHAR
TCHAR a[256];
然后GetPrivateProfile.....给a赋值
我用msdn的例子改了一下试了unicode编译下没问题,可以添加data source
实在还不行你debug一下, 看看GetPrivateProfile以后a地址内的东西, 还有odbc那个config函数的返回值
下面是刚才试的代码 (刚才看msdn的时候还发现一个sqlunicode.h 不过好像和这个config函数没什么关系..)
#define UNICODE
#define _UNICODE
#include <Windows.h>
#include <tchar.h>
#include <odbcinst.h>
#include <sql.h>
int main(int argc, char* argv[])
{
RETCODE retcode;
TCHAR *szDriver = _TEXT("SQL Server");
TCHAR *szAttributes =
_T("DSN=TestDSN\0Server=SQL SERVER\0DataBase=xsxl\0\0");
retcode = SQLConfigDataSource(NULL,
ODBC_ADD_DSN,
szDriver,
szAttributes);
}#define UNICODE
#define _UNICODE
#include <tchar.h>
#include <Windows.h>
#include <odbcinst.h>
#include <sql.h>
void main(int argc, char* argv[])
{
RETCODE retcode;
TCHAR *szDriver = _TEXT("SQL Server");
TCHAR *szAttributes =
_T("DSN=TestDSN\0Server=SQL SERVER\0DataBase=xsxl\0\0");
retcode = SQLConfigDataSource(NULL,
ODBC_ADD_DSN,
szDriver,
szAttributes);
}
zhucde
2004-04-02
打赏
举报
回复
char* szDesc;
int mlen;
szDesc=new char[256];
sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s?? ","LawInfo","c:\\aa","c:\\");
mlen = strlen(szDesc);
for (int i=0; i<mlen; i++)
{
if (szDesc[i] == '?')
szDesc[i] = '\0';
}
if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc))
AfxMessageBox("SQLConfigDataSource Failed");
快乐鹦鹉
2004-04-02
打赏
举报
回复
我知道楼主很着急,我也很想帮助你。可是我对数据库编程不是很了解。不如你给数据库小板块的版主发短信求助吧。真的很抱歉啊。能力不够。
mishu
2004-04-02
打赏
举报
回复
SQLConfigDataSourceW(NULL,ODBC_ADD_DSN,_T("SQL SERVER"),a);其中a=_T("DSN=TestDSN\0Server=SQL SERVER\0DataBase=xsxl\0\0"),如果在函数中直接写字符串就可以成功设置数据源了,但是a是一个变量,通过GetPrivateProfile来获得的,所以函数中只能用变量a来表示,但是这样就不能成功设置数据源了。有哪位高手指点指点啊!期盼!
mishu
2004-04-02
打赏
举报
回复
不是编译错误,可以执行,但是在管理工具里没看到数据源连接上。
weixxxp
2004-04-01
打赏
举报
回复
把错误信息贴出来看看!
weixxxp
2004-04-01
打赏
举报
回复
是编译错误还是链接错误?要是链接错误的话那就是没有unicode的DLL,VC缺省是不安装unicode库的。
mishu
2004-03-31
打赏
举报
回复
weixxxp:按你说的做了,可是还不行啊,到底差哪呢?
weixxxp
2004-03-28
打赏
举报
回复
a申明成TCHAR类型,即
TCHAR a[256];
CSDNXX
2004-03-26
打赏
举报
回复
UP
mishu
2004-03-26
打赏
举报
回复
谢谢 zhaolaoxin() 的捧场。
对a的赋值也采用_T()方式。我就是那样做的啊,可是最后还是不行啊,还差哪呢?
期待!
zhaolaoxin
2004-03-26
打赏
举报
回复
对a的赋值也采用_T()方式
mishu
2004-03-26
打赏
举报
回复
???
加载更多回复(1)
JAVA扫雷程序代码 详细注释
JAVA 扫雷程序代码 ,添加了“
求救
”功能,可以随机获知一个为标记的雷的位置 我自己写了详细的注释,我是
菜鸟
~这程序是一边学一遍写的
MASM_IRVINE32第一个汇编程序
经过数小时的摸索和上网
求救
,终于运行了自己的第一个汇编程序,很开心。也想帮助那些初学者,特别是不会cmd命令的新人,在下也是
菜鸟
,不当之处请指正:)
Web Components 新前端组件新手
菜鸟
快速入门与实战
1,从
菜鸟
零基础到熟练掌握,使用 Web Components 基于原生的新 前端组件技术,用有趣的堆积木的方式,开发实战一个带动画交互的组件式移动端 WEB 应用。 组件式开发是前端发展的方向,现在流行...
java 扫雷源代码 带有详细的注释
菜鸟
练习~~ 加入了“
求救
”按钮,在无法继续通过计算扫雷时,可以点出此获知随机的一个未标记雷的位置; 加入了计时器; 加入了作弊功能……嘿嘿,按下键盘上的某键,可以知道所有雷的位置,吼吼
JAVA 扫雷1.2 源代码 详细注释
JAVA 扫雷程序代码 , 添加了“
求救
”功能,可以随机获知一个为标记的雷的位置 添加了计时器 添加了“作弊的功能”,按键盘的上下键会有惊喜哦 我写了详细的注释,我是
菜鸟
~这程序是一边学一遍写的
数据库
4,011
社区成员
39,816
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章