Access 数据库连接
m_pConnectAccess.CreateInstance(__uuidof(Connection));
strSql.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password = %s",strPath,"linsn");
m_pConnectAccess->Open((_bstr_t)strSql,"","",adModeUnknown);//连接数据库
sql server数据库连接
strSql.Format("Provider=SQLOLEDB.1; Data Source = 127.0.0.1,1433; Initial Catalog = %s;", strDatabaseName);
m_pConnectSQL.CreateInstance(__uuidof(Connection));
m_pConnectSQL->Open((_bstr_t)strSql,"sa","sasa",adModeUnknown);//连接数据库
判断sql server是否存在数据库strDatabaseName
1.先连接到master
2 。执行查询语句"select * from master..sysdatabases where name = '%s'", strDatabaseName)
如果存在记录说明数据库存在
_RecordsetPtr pRecordset;
他的close函数必须在open成功时才能调用,否则会出错
好的方法:
HRESULT hr;
hr = pRecordset->Open(......)
if(SUCCEEDED(hr))
{
pRecordset->Close();
}
判断数据库是否存在表
_RecordsetPtr pRstSchema = NULL;
CString strTableName = _T("");
pRstSchema = pConnect->OpenSchema(adSchemaTables);
if (!pRstSchema->BOF)
{
pRstSchema->MoveFirst();
}
while(!pRstSchema->adoEOF)
{
strTableName = __VariantToCString(pRstSchema->GetFields()->GetItem("TABLE_NAME")->Value);
}
获取表字段的名称,属性,值
type = recordsetAccess->GetFields()->GetItem(_variant_t(iIndex))->GetType();
Attributes = recordsetAccess->GetFields()->GetItem(_variant_t(iIndex))->Attributes;
FieldName = recordsetAccess->GetFields()->GetItem(_variant_t(iIndex))->GetName();