Red de conocimiento informático - Aprendizaje de código fuente - La programación de bases de datos VC ODBC viola los atributos de tipo de datos de restricción

La programación de bases de datos VC ODBC viola los atributos de tipo de datos de restricción

Escribe la línea anterior de if

#import "C:\program files\common files\System\ado\msado15.dll" no_namespace \

rename ("EOF", "EndOfFile") \

rename("LockTypeEnum", "newLockTypeEnum")\

rename("DataTypeEnum", "newDataTypeEnum")\

rename("FieldAttributeEnum", "newFieldAttributeEnum")\

rename("EditModeEnum", "newEditModeEnum")\

rename("RecordStatusEnum", "newRecordStatusEnum")\

rename("ParameterDirectionEnum", "newParameterDirectionEnum")

Si su sistema no está instalado en la unidad C, cambie la C después de #importar a todos los discos del sistema

(2). Agregue

_RecordsetPtr m_pADOSet;

bool ADOExecute(_RecordsetPtr amp; en

public: de la clase C***App. ; ADOSet, _variant_t&strSQL);

Agregue _ConnectionPtr ADOConn en privado:;

En la clase C***App: CWinApp pública

{

...

}; agregue la aplicación C*** externa después de #endif;

(3) En BOOL C***App:: Enable3dControls() en Función InitInstance(); // Agregar esta línea Llame a esto cuando se vincule estáticamente a MFC

if( FAILED(::CoInitialize(NULL))

{

AfxMessageBox("Error en el inicio de ADO");

devuelve falso

}

prueba

{

ADOConn.CreateInstance(__uuidof(Conexión));

ADOConn-gt; Open("DSN=fuente de datos OBDC; Proveedor=MSDASQL", "Usuario", "Contraseña", adConnectUnspecified); La línea debe ser modificada por usted mismo

}

catch(_com_error amp;e)

{

CString err;

err.Format("s", (char*)(e.Descripción())

AfxMessageBox(err); p>captura(.

..)

{

AfxMessageBox("Error desconocido...");

}

m_pADOSet.CreateInstance(__uuidof( Recordset));

Y agregue el siguiente código al final del archivo:

bool C***App:: ADOExecute(_RecordsetPtr amp; ADOSet, _variant_t amp; strSQL)

{

if (ADOSet-gt;State == adStateOpen) ADOSet-gt;Close();

intentar

{

ADOSet-gt;Open(strSQL, ADOConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdUnknown);

devuelve verdadero;

}

catch(_com_error & e)

{

CString err;

err.Format("Error ADO: s", (char*)e .Descripción ());

AfxMessageBox(err);

devuelve falso

}

}

Finalmente, puede ejecutar sentencias SQL al iniciar sesión. Por ejemplo, si el usuario es CString strUser y la contraseña es CString strPwd si la tabla de la base de datos es user_table (user_id, user_name, user_pwd), entonces

_variant_t; strQuery, Holder;

strQuery = "seleccione * de user_table donde user_name='" strUser "' y user_pwd='" strPwd "'"; , strQuery);

int iCount = theApp.m_pADOSet-gt; GetRecordCount()

if ( 0==iCount )

{

AfxMessageBox(_T("Error de contraseña"), MB_ICONEXCLAMATION);

return;

}

else

{

AfxMessageBox(_T ("Inicio de sesión exitoso"), MB_ICONEXCLAMATION);

}