Red de conocimiento informático - Conocimiento informático - Programación de bases de datos de ingeniería

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";

p>

//_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.)

_RecordsetPtr m_pSet(_uuid(Recordset));

prueba {

HRESULT hr=m_pSet->Open(%%1,m_pConnection.GetInterfacePtr(),

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();