Share via


CDatabase::OpenEx

Llame a esta función miembro para inicializar un objeto recientemente construido de CDatabase .

virtual BOOL OpenEx( 
   LPCTSTR lpszConnectString, 
   DWORD dwOptions = 0  
);

Parámetros

  • lpszConnectString
    Especifica una cadena de conexión ODBC.Esto incluye el nombre del origen de datos junto con otra información opcional, como un Id. de usuario y una contraseña.Por ejemplo, “DSN=SQLServer_Source; UID=SA; PWD=abc123” es una cadena de conexión posible.Observe que si pasa NULL para lpszConnectString, un cuadro de diálogo del origen de datos pedirá al usuario seleccionar un origen de datos.

  • dwOptions
    Una máscara de bits que especifica una combinación de los siguientes valores.El valor predeterminado es 0, lo que significa que la base de datos se abre como shared con acceso de escritura, la biblioteca de cursores ODBC DLL no se cargará, y el cuadro de diálogo de conexión ODBC mostrará únicamente si no hay información suficiente para crear la conexión.

    • CDatabase::openExclusive No compatibles en esta versión de la biblioteca de clases.Un origen de datos se abre siempre compartido (no exclusivo).Actualmente, una aserción si especifica esta opción.

    • Abrir deCDatabase::openReadOnly el origen de datos como de sólo lectura.

    • Carga deCDatabase::useCursorLib la biblioteca de cursores ODBC DLL.La biblioteca de cursores enmascara alguna funcionalidad de controlador ODCB subyacente, evitando eficazmente el uso de conjuntos de registros dinámicos (si el controlador los admite).Los únicos cursores admitidos si la biblioteca de cursores se carga son instantáneas y cursores de sólo avance estáticos.Si piensa crear un objeto de conjunto de registros directamente de CRecordset sin derivar de ella, no debe cargar la biblioteca de cursores.

    • CDatabase::noOdbcDialog no muestra el cuadro de diálogo de conexión ODBC, independientemente de si suficiente información de conexión se proporciona.

    • Presentación deCDatabase::forceOdbcDialog Always el cuadro de diálogo de conexión ODBC.

Valor devuelto

Distinto de cero si la conexión se crea correctamente; si no 0 si el usuario elige la cancelación cuando se muestra un cuadro de diálogo solicitando más información de conexión.En todos los demás casos, el marco de trabajo produce una excepción.

Comentarios

El objeto de base de datos debe inicializar antes de utilizarlo para construir un objeto de conjunto de registros.

Si el parámetro de lpszConnectString en su llamada a OpenEx no contiene información suficiente para crear la conexión, el controlador ODBC abre un cuadro de diálogo para obtener la información necesaria del usuario, siempre que no haya establecido CDatabase::noOdbcDialog o CDatabase::forceOdbcDialog en el parámetro de dwOptions .Cuando se llama a OpenEx, la cadena de conexión, lpszConnectString, se almacena privada en el objeto de CDatabase y está disponible llamando a la función miembro de GetConnect .

Si se deseo, puede abrir su propio cuadro de diálogo antes de llamar a OpenEx para recopilar información del usuario, como una contraseña, y a continuación agréguelo que información en la cadena de conexión que se pasa a OpenEx.O tal vez desee guardar la cadena de conexión que se pasa para que pueda reutilizarla la próxima vez que las llamadas OpenEx de aplicación en un objeto de CDatabase .

También puede usar la cadena de conexión para varios niveles de autorización de inicio de sesión (cada uno para otro objeto de CDatabase ) o mostrar otra información origen-específica de los datos.Para obtener más información sobre las cadenas de conexión, vea el capítulo 6 en la referencia del programador de ODBC.

Es posible que un intento de conexión al tiempo de espera si, por ejemplo, el host DBMS no está disponible.Si el intento de conexión, OpenEx produce CDBException.

Ejemplo

// m_dbCust is a CDatabase object embedded in a CDocument class.

// Connect the object to a read-only data source where
// the ODBC connection dialog box will always remain hidden
m_dbCust.OpenEx(_T("DSN=MFC_ODBCTest;UID=JOES"),
   CDatabase::openReadOnly | CDatabase::noOdbcDialog);

Requisitos

encabezado: afxdb.h

Vea también

Referencia

Clase CDatabase

Gráfico de jerarquía

CDatabase::Open

CDatabase::CDatabase

CDatabase::Close

Clase CDBException

CRecordset::Open