如何用代码添加一个DSN,数据库为Sql Server!!!! SQLConfigDataSource (ODBC) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SQLConfigDataSource (ODBC) 我用这条语句SqlConfigDataSource(NULL,ODBC_ADD_DSN,"SQL Server","DSN=PowView\0UID=sa\0PWD=;\0DATABASE=Personal\0\0");执行结果是0,错在哪? 我对ODBC API编程不是很熟,不过我建议你使用基于DSN-Less的连接:SQLConnect("Driver=SQL Server,DBQ=DbName,UserID=uid,Password=pwd") 下面我曾写的几段代码供参考,加DSN是绝对没问题的,同时可以显示你的错误原因,根据错误原因再修改连接串吧.void ShowInstErr(void){ TCHAR szErrMsg[100],pBuf[256]; WORD cbErrMsg; DWORD errcode; SQLInstallerError(1,&errcode,szErrMsg,sizeof(szErrMsg),&cbErrMsg); wsprintf(pBuf,"ODBCINST(%d):\n%s",errcode,szErrMsg); MessageBox(0,pBuf,_T("ODBC安装错误"),MB_OK|MB_ICONERROR);}BOOL WINAPI RemoveDSN(LPTSTR lpszDSName,LPTSTR lpszDriverName){ TCHAR pBuf[ATTR_LEN]; LPTSTR pAttrFmt="DSN=%s;"; wsprintf(pBuf,pAttrFmt,lpszDSName); LPTSTR p=_tcschr(pBuf,';'); *p='\0'; BOOL ret= ::SQLConfigDataSource (NULL,ODBC_REMOVE_DSN,lpszDriverName,pBuf); if (!ret) ShowInstErr(); return ret;}/********************************************入口要求:连接串用"name1=value1;name2=value2"之类,*Attibute中不含有DSN=...*********************************************/BOOL WINAPI AddDatasource(HWND hwndParent,LPTSTR lpszDSName,LPTSTR lpszDriverName,LPTSTR lpszAttribute){ BOOL ret; TCHAR pAttr[ATTR_LEN]; ::wsprintf(pAttr,_T("DSN=%s;%s;"),lpszDSName,lpszAttribute); LPTSTR temp=pAttr; //;全部替换成\0; while(*temp){ if (*temp==';') *temp='\0'; temp++; } ret= ::SQLConfigDataSource (hwndParent,ODBC_ADD_DSN,lpszDriverName,pAttr); if (!ret) ShowInstErr(); return ret;} 怎么动态获取serv-u配置的路径呢 一个程序中如何创建多个OpenGL窗口 如何在编译时加入winmm.lib? ADO连接SQL数据库时发生的异常该如何捕获? 如何得到临时文件夹的路径? 怎么让窗体具有立体感,有什么API函数? 在Dialog界面上有一个Edit控件,我想在其中显示回行信息,请问如何处理? =>请看里面 初学者想请教:怎样在程序中显示jpg或gif格式图片? 如何将各种类型的数据转换到MessageBox()支持的数据类型然后用MessageBox()显示??? 编程领域的歌德巴赫猜想:如何获取其它程序的数据并对其进行修改 如何得到随机数? 调用DLL的难题!
SQLConfigDataSource (ODBC)
执行结果是0,错在哪?
SQLConnect("Driver=SQL Server,DBQ=DbName,UserID=uid,Password=pwd")
{ TCHAR szErrMsg[100],pBuf[256];
WORD cbErrMsg;
DWORD errcode;
SQLInstallerError(1,&errcode,szErrMsg,sizeof(szErrMsg),&cbErrMsg);
wsprintf(pBuf,"ODBCINST(%d):\n%s",errcode,szErrMsg);
MessageBox(0,pBuf,_T("ODBC安装错误"),MB_OK|MB_ICONERROR);
}BOOL WINAPI RemoveDSN(LPTSTR lpszDSName,LPTSTR lpszDriverName)
{ TCHAR pBuf[ATTR_LEN];
LPTSTR pAttrFmt="DSN=%s;";
wsprintf(pBuf,pAttrFmt,lpszDSName);
LPTSTR p=_tcschr(pBuf,';');
*p='\0';
BOOL ret= ::SQLConfigDataSource (NULL,ODBC_REMOVE_DSN,lpszDriverName,pBuf);
if (!ret) ShowInstErr();
return ret;
}
/******************************************
*
*入口要求:连接串用"name1=value1;name2=value2"之类,
*Attibute中不含有DSN=...
*
*
*******************************************/
BOOL WINAPI AddDatasource(HWND hwndParent,LPTSTR lpszDSName,LPTSTR lpszDriverName,LPTSTR lpszAttribute)
{
BOOL ret;
TCHAR pAttr[ATTR_LEN];
::wsprintf(pAttr,_T("DSN=%s;%s;"),lpszDSName,lpszAttribute);
LPTSTR temp=pAttr;
//;全部替换成\0;
while(*temp){
if (*temp==';') *temp='\0';
temp++;
}
ret= ::SQLConfigDataSource (hwndParent,ODBC_ADD_DSN,lpszDriverName,pAttr);
if (!ret) ShowInstErr();
return ret;
}