Programación de bases de datos de ingeniería
1. Extraiga un solo registro
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL);
_bstr_t varSource=" Proveedor =Microsoft.Jet.OLEDB.4.0;Fuente de datos=*.mdb";
//_bstr_t varSource="Fuente de datos=myServerAddress;Catálogo inicial=myDataBase;Id. de usuario=myUsername;Contraseña=myPassword; "
_ConnectionPtr m_pConnection(_uuidof(Conexión));
m_pConnection->Open(varSource,"","",adModeUnknow);
_RecordsetPtr m_pSet( _uuid (Conjunto de registros));
pruebe {
m_pSet->Open(%%1,m_pConnection.GetInterfacePtr()
adOpenDynamic,adLockPessimistic,adCmdText);
}
catch(_com_error *e){
{
AfxMessageBox(e->ErrorMessage());
return;
}
_variant_t var;
CString %%2="";
long fldc=m_pSet - >GetFields()->GetCount();
long i=0;
prueba {
m_pSet->MoveFirst();
if(!m_pSet->adoEOF)
{
for(i=0;i { var=m_pSet->GetCollect((long)i); var.ChangeType(VT_BSTR); %%2+=var.bstrVal; %%2+=" "; } //m_pSet->MoveNext(); } } catch(_com_error *e){ AfxMessageBox(e->ErrorMessage()); eliminar e; } //m_pSet->MoveFirst(); CoUninitialize(NULL); 2. Comparación de valor único /*< / p> #import "c:\Program Files\Common Files\System\ADO\msado15.dll" \ no_namespace rename("EOF", "EndOfFile") */ CoInicializ e(NULL); _bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb"; //_bstr_t varSource="Data Source= myServerAddress;Catálogo inicial=myDataBase;User Id=myUsername;Password=myPassword;" _ConnectionPtr m_pConnection(_uuidof(Connection)); m_pConnection->Open(varSource,"", "",adModeUnknow); _RecordsetPtr m_pSet(_uuid(Recordset)); prueba { m_pSet->Open(%%1,m_pConnection.GetInterfacePtr (), adOpenDynamic,adLockPessimistic,adCmdText); } catch(_com_error *e){ { AfxMessageBox(e->ErrorMessage()); return; } _variant_t var; prueba { m_pSet->MoveFirst(); if(!m_pSet->adoEOF) { var=m_pSet->GetCollect ((largo)0); var.ChangeType(VT_I2); int %%3=var.intVal; if(%%3= =%%4) { %%5 } //m_pSet->MoveNext(); } catch(_com_error *e){ AfxMessageBox(e->ErrorMessage()); eliminar e; } //m_pSet->MoveFirst(); CoUninitialize(NULL); 3. > /* #import "c:\Program Files\Common Files\System\ADO\msado15.dll" \ no_namespace rename("EOF", "EndOfFile")< / p> */ CoInitialize(NULL); _bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb"; //_bstr_t varSource="Fuente de datos=myServerAddress;Catálogo inicial=myDataBase;Id. de usuario=myUsername;Password=myPassword;" _ConnectionPtr m_pConnection(_uuidof(Conexión)); m_pConexión->Abrir (varSource,"","",adModeUnknow); //Las propiedades abiertas son predeterminadas (adModeRead (solo lectura), adModeWrite (escribible), adModeReadWrite (lectura-escritura), etc.) p> _RecordsetPtr m_pSet(_uuid(Recordset)); prueba { HRESULT hr=m_pSet->Open(%%1,m_pConnection.GetInterfacePtr(), p> adOpenDynamic,adLockPessimistic,adCmdText); } catch(_com_error *e){ AfxMessageBox(e->ErrorMessage()) ; } if(SUCCESSED(hr)) { //La tabla se abrió correctamente } FieldsPtr p_fields=m_pSet->Campos; FieldPtr p_field; _variant_t var_index; LPCSTR nombre_campo; int index=0; _bstr_t bstr_field_name; int countfields=p_fields->GetCount(); CString *Columna=nueva CString[countfields ]; CListCtrl *pList=(CListCtrl*)GetDlgItem(%%1);//IDC_LIST_TABLEDATA VERIFY(pList); pList->DeleteAllItems () ; for(index=0;index { var_index.vt=VT_I4; var_index.IVal=index; p_field=p_fields->Item[var_index]; bstr_field_name=p_field->GetName(); field_name=(LPCSTR )bstr_field_name ; Columna[index]=field_name; int ColumnWidth=Columna[index].GetLength()*15; pList->InsertColumn( índice, nombre_campo,LVCFMT_CENTER,AnchoDeColumna); } int i=0; _bstr_t vCol; //pList- >SetTextBkColor (RGB(122,200,122)); //pList->SetTextColor(RGB(0,0,200)); while(!m_pSet->adoEOF) { pList->Insert(i,atoi(i)); for(int j=0;j { vCol=m_pSet->G etCollect((long)j); pList->SetItemText(i,j,vCol); } m_pSet->MoveNext(); i++; } CoUninitialize(NULL); 22. Ejecutar SQL y procedimientos almacenados en lotes 22.1. Si utiliza ODBC para acceder a la base de datos, puede consultar el siguiente código: CDatabase * pDatabase = new CDatabase; TRY { pDatabase->OpenEx( _T("DSN=ODBCName;UID=%%1;PWD=%%2"), CDatabase::noOdbcDialog } CATCH (CDBException, e) { eliminar pDatabase regresar }END_CATCH SQL.Format ("exec sp_Name");//Si hay parámetros, escríbalos directamente al final pDatabase->ExecuteSQL(SQL); pDatabase-; >Close(); eliminar pDatabase; 22.2. Utilice ADO para llamar a procedimientos almacenados _ConnectionPtr Conn = NULL _RecordsetPtr; Rs = NULL; _CommandPtr Cmd = NULL; CoInitialize(NULL); Conn.CreateInstance ( __uuidof(Conexión)); p>Rs.CreateInstance (__uuidof(Recordset)) Cmd.CreateInstance (__uuidof(Command)); Conn->Open(L"db", L"sa" , L"", adOpenUnspecified); //Abrir Normal //A continuación se muestra la asignación y llamada de los parámetros del objeto _CommandPtr Cmd->ActiveConnection = Conn Cmd->CommandText = "SP_TEST"; //Este procedimiento almacenado de prueba realmente existe en la base de datos, seleccione * de una tabla, no se pasan parámetros Cmd- >CommandType = adCmdStoredProc; Cmd->Parámetros->Refresh(); Rs = Cmd->Ejecutar( NULL,NULL, adCmdUnknown ); //El código comentado se envía como una declaración SQL directa y se ejecuta correctamente. //Cmd->ActiveConnection=Conn; //Cmd->CommandText = "seleccionar * de una tabla"; = adCmdText; //Cmd->Parámetros->Actualizar(); //Rs = Cmd->Ejecutar(NULL,NULL,adCmdUnknown); p>Rs->Cerrar(); Conn->Cerrar(); CoUninitialize();