马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有的时候,一些缺失的功能可以通过别的办法来实现,例如,在MySQL4.1以前,你可以通过使用join方法来替代子查询的功能。在MySQL5.0中,大多数关系型数据库所要求的功能已经都具备。voidOpenSchemaX(TCHAR*TableName)
{
HRESULThr=S_OK;
::CoInitialize(NULL);//初始化Com
IADORecordBinding*picRs=NULL;
_RecordsetPtrpRstSchema("ADODB.Recordset");
_ConnectionPtrpConnection("ADODB.Connection");
pConnection->ConnectionString=TableName;
pConnection->Provider="Microsoft.Jet.OLEDB.4.0";
try
{
pConnection->Open(pConnection->ConnectionString,"","",adModeUnknown);
pRstSchema->QueryInterface(
__uuidof(IADORecordBinding),(LPVOID*)&picRs);
pRstSchema=pConnection->OpenSchema(adSchemaTables);//列举表的称号处置
while(!(pRstSchema->EndOfFile))
{
CStringstrTableType;
_bstr_ttable_name=pRstSchema->Fields->
GetItem("TABLE_NAME")->Value;//猎取表的称号
_bstr_ttable_type=pRstSchema->Fields->
GetItem("TABLE_TYPE")->Value;//猎取表的范例
strTableType.Format("%s",(LPCSTR)table_type);
if(!lstrcmp(strTableType,_T("TABLE")))
{
m_strList.AddString((LPCSTR)table_name);//增加表的称号
}
pRstSchema->MoveNext();
}
//Cleanupobjectsbeforeexit.
pRstSchema->Close();
pConnection->Close();
}
catch(_com_error&e)
{
//Notifytheuseroferrorsifany.
//PassaconnectionpointeraccessedfromtheConnection.
PrintProviderError(pConnection);
PrintComError(e);
}
CoUninitialize();
}
voidPrintProviderError(_ConnectionPtrpConnection)
{
ErrorPtrpErr=NULL;
if((pConnection->Errors->Count)>0)
{
longnCount=pConnection->Errors->Count;
//Collectionrangesfrom0tonCount-1.
for(longi=0;i<nCount;i++)
{
pErr=pConnection->Errors->GetItem(i);
CStringstrError;
strError.Format("Errornumber:%x %s",pErr->Number,pErr->Description);
AfxMessageBox(strError);
}
}
}
voidPrintComError(_com_error&e)
{
_bstr_tbstrSource(e.Source());
_bstr_tbstrDescription(e.Description());
//PrintCOMerrors.
CStringstrError;
strError.Format("Errornumber:Description=%s Codemeaning=%s",(LPCSTR)bstrDescription,e.ErrorMessage());
AfxMessageBox(strError);
}
挪用办法:
CStringstrFileName;
TCHARFileName[MAX_PATH];
TCHARbigBuff[2048]=_T("");//maximumcommondialogbuffersize
TCHARszFilter[]=_T("TextFiles(*.mdb)|*.mdb|AllFiles(*.*)|*.*
");
CFileDialogdlg(TRUE,NULL,NULL,
OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,szFilter);
//ModifyOPENFILENAMEmembersdirectlytopointtobigBuff
dlg.m_ofn.lpstrFile=bigBuff;
dlg.m_ofn.nMaxFile=sizeof(bigBuff);
if(IDOK==dlg.DoModal())
{
strFileName=dlg.GetPathName();
lstrcpy(FileName,strFileName);
OpenSchemaX(FileName);
}(出处:风闪网路学院)
不可否认,MySQL也是一个很好的关系型数据库,或许在技术上它与其他领先的关系数据库相差并不大,或不具有劣势。但是,对于一些企业环境来说,MySQL显然不具有优势。 |