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