Q:我现在手上用两个软件.它们都用配置文件连接数据库,这两个配置文件如下(*.ini):
apc.ini
[ConectInfo]
Pvd=SQLOLEB.1
PSI=False
UserID=chen
PW=1234
IniCatalog=ety2000
DataSource=zhineng
Lotus.ini
[Setup]
ServerName=zhineng
DatabaseName=Lotus
WORKID=TWSQL
PASSWD=
两个软件都是用的SQL2000的数据库.
这样就不用建数据源了,很方便.
在VC中怎样用这样的配置文件连接数据库?另外在VC中怎样调用SQL数据库中的存储过程和视图??
A:
char szTemp[128];
CString strIniFile;
strIniFile = ".//apc.ini.ini";
WIN32_FIND_DATA fileData;
HANDLE hFileSearch = FindFirstFile(strIniFile, &fileData);
if (hFileSearch == INVALID_HANDLE_VALUE)
{
AfxMessageBox("读初始化文件出错!");
return FALSE;
}
// 读取数据库服务器有关配置信息
::GetPrivateProfileString("ConectInfo", "Name", "BillServer",
szTemp, 128, strIniFile);
m_strSvrName = szTemp;
::GetPrivateProfileString("ConectInfo", "Database", "Bills",
szTemp, 128, strIniFile);
m_strDB = szTemp;
::GetPrivateProfileString("ConectInfo", "UID", "sa",
szTemp, 128, strIniFile);
m_strUsrName = szTemp;
::GetPrivateProfileString("ConectInfo", "PWD", "",
szTemp, 128, strIniFile);
m_strPWD = szTemp;
try
{
pConn.CreateInstance("ADODB.Connection");
CString strTmp;
strTmp = "Provider=SQLOLEDB;SERVER=" + m_strSvrName + ";DATABASE="
+ m_strDB + ";UID=" + m_strUsrName + ";PWD=" + m_strPWD;
pConn->Open(_bstr_t(strTmp), "", "", -1);
m_pReco = NULL;
m_pReco.CreateInstance(__uuidof(AdoNS::Recordset));
}
catch(_com_error e) // 捕捉异常
{
_bstr_t bstrSource(e.Source());
_bstr_t bs = _bstr_t(" Error: ") + _bstr_t(e.Error())
+ _bstr_t(" Msg: ") + _bstr_t(e.ErrorMessage())
+ _bstr_t(" Description: ") + _bstr_t(e.Description());
AfxMessageBox(bs + bstrSource);
return FALSE;
}