我用vc设置数据源,采用UNICODE工程,SQL Server数据库。其中如下
CString a=_T("DSN=TryDSN\0Server=Whd\0Database=xsxl\0\0");
SQLConfigDataSource(NULL,ODBC_ADD_SYS,_T("SQL Server\0"),a);这样程序运行结果就不正确。而如果第四个参数不用变量a来代替,而直接写字符串,这样结果就正确。因为上面那个串我是动态获得的,所以时刻变化,不能直接写在函数里。所以用变量代替,可是老出错,是宽字节间的转换问题,可是我用了很多来转换,就是不好用。那位大虾有此经历,能给出指点,菜鸟在此谢谢了。
CString a=_T("DSN=TryDSN\0Server=Whd\0Database=xsxl\0\0");
SQLConfigDataSource(NULL,ODBC_ADD_SYS,_T("SQL Server\0"),a);这样程序运行结果就不正确。而如果第四个参数不用变量a来代替,而直接写字符串,这样结果就正确。因为上面那个串我是动态获得的,所以时刻变化,不能直接写在函数里。所以用变量代替,可是老出错,是宽字节间的转换问题,可是我用了很多来转换,就是不好用。那位大虾有此经历,能给出指点,菜鸟在此谢谢了。
should be
CString a=_T("DSN=TryDSN\0Server=Whd\0Database=xsxl\0");
"DSN=New Excel Data Source\0"
"Description=New Excel Data Source\0"
"FileType=Excel\0"
"DataDirectory=C:\\EXCELDIR\0"
"MaxScanRows=20\0");for example
CString a(_T("DSN=TryDSN\0Server=Whd\0Database=xsxl\0"),
sizeof _T("DSN=TryDSN\0Server=Whd\0Database=xsxl\0") / sizeof(TCHAR) -1);
即使用
CString(
LPCTSTR lpch,
int nLength ); 这个构造函数