Manipular archivos de código fuente C++ para bases de datos de SQL Server
A. Configuración:
1. Configure el servidor SQLSERVER para iniciar sesión en SQL y configure la función de inicio de sesión del usuario sa en "Habilitar" en la seguridad del sistema y establezca una contraseña. requerido.
2. Debe configurar la fuente de datos en ODBC, seleccionar "SQL SERVER" como fuente de datos, utilizar "autenticación de SQL SERVER utilizando el nombre de usuario y la contraseña ingresados" como método de inicio de sesión y completar. en el nombre de inicio de sesión (sa) y la Contraseña, tenga en cuenta que la contraseña no puede estar vacía, lo que significa que su usuario sa debe tener una contraseña. Esto significa que su usuario sa debe tener una contraseña. De lo contrario, no se aprobará la política de seguridad del propio sistema. Si la prueba pasa, la configuración está completa.
El segundo paso, inicialización de la conexión
1. Introduzca ADO en el archivo de encabezado stdafx.h del proyecto C++ que creó
El código específico es el siguiente #importar? "c:\Program?Files\Common?Files\System\ado\msado15.dll"
no_namespace?rename("EOF",? "adoEOF")?rename("BOF", ? "adoBOF ")
2. Defina la variable _ConnectionPtr y luego llame al método Open del objeto Connection para establecer una conexión con el servidor.
El tipo de datos _ConnectionPtr es en realidad una clase de instancia concreta obtenida de la plantilla de clase _com_ptr_t. La clase _ConnectionPtr encapsula un puntero a la interfaz Idispatch del objeto Connection y algunas de sus operaciones necesarias. El objeto de conexión se puede operar a través de este puntero.
Por ejemplo, para conectarse a la base de datos SQLServer, el código es el siguiente: //Conectarse a MS.SQL.Server
//¿Inicializar puntero?
_ConnectionPtr?pMyConnect?=?NULL;?
HRESULT?hr?=?pMyConnect.CreateInstance(__uuidof(Conexión));?
if(FAILED (hr))?
return;?
//¿Inicializar parámetros de enlace?
_bstr_t?strConnect="Provider=SQLOLEDB;?
Servidor=127.0.0.1;?
Base de datos=mytest;?
Base de datos=miprueba;?
uid=sa;?pwd=sa;";?
Base de datos=miprueba;?
uid=sa;?pwd= sa;";?
//¿Realizar conexión?
intentar
{?
//? Cadena de conexión del método Open Debe ser de tipo quad-BSTR o _bstr_t
pMyConnect->Open(strConnect,?"" ,?"" ,?NULL);?
}?
catch(_com_error?&e)?
{?
MessageBox(e.Description(),?" Advertencia",?MB_OK|MB_ICONINFORMATION);?
}//Se produjo un error de enlace
3. Conexión de datos simple // ¿Definir la variable _RecordsetPtr y llamar a Open del objeto Recordset para abrir el conjunto de datos
//? ¿Proceso de inicialización?
_RecordsetPtr?pRecordset;?
if(FAILED(pRecordset.CreateInstance(__uuidof(Recordset))))?))?
{?
return;?
}?
//¿Realizar la operación?
¿intentar?
{? /p>
pRecordset->Open(_variant_t("userinfo"),?
_variant_t((IDispatch*)pMyConnect),?
adOpenKeyset, ?adLockOptimistic,?adCmdTable );?
}?
catch(_com_error?&e)?
{?
MessageBox(" No se puede abrir la tabla de información de usuario \",?" Consejo del sistema",?
MB_OK|MB_ICONINFORMATION);?
}
4. Ejecutar sentencias SQL p>
La clave está aquí. Creo que siempre que conozca algunas declaraciones SQL, todo será mucho más conveniente, más simple y más eficiente que usar el método anterior.
Primero m_pConnection.CreateInstance(_uuidof(Connection));?
//¿Inicializar el puntero de conexión?
m_pRecordset.CreateInstance(__uuidof(Recordset));
//¿Inicializar el puntero del conjunto de registros?
CString?strSql="select?*?from?tb_e_goods";//¿sentencia SQL específica para ejecutar?
m_pRecordset=m_pConnection->Execute(_bstr_t(strSql),?
NULL,?adCmdText);//Importar datos de consulta al contenedor de datos m_pRecordset
En este punto, su instrucción SQL se ha ejecutado y los datos en m_pRecordset son el resultado de su ejecución.
Obtener registros: while(!m_pRecordset->adoEOF)//Recorrer y leer los registros en la columna de nombre, y luego generar?
{? CString ?temp?=?(TCHAR?*)(_bstr_t)m_pRecordset->GetFields()->GetItem?
("nombre")->Valor;?
AfxMessageBox( temp );?
pRecordset->MoveNext();?
}
V. Insertar registro // Recuerde inicializar el puntero antes de realizar lo siguiente operaciones?
CString?strsql;?
strsql.Format("insertar en?tb_e_goods(no,nombre,precio)?
values('%d', '%s',? %d)",m_intNo,m_strName,m_intPrice);?
m_pRecordset=m_pConnection->
Ejecutar(_bstr_t(strsql),NULL,adCmdText);
Sexto, modificar el registro CString?strsql;?
strsql.Format("update?tb_e_goods?set?name='%s'?,?
precio=%d?where?no=%d?",m_strName,m_intPrice,m_intNo);
m_pRecordset=m_pConnection->Ejecutar(_bstr_t(strsql),NULL, adCmdText);
VII. Eliminar registro CString?strsql;?
strsql.Format("delete?from?tb_e_goods?where?no=?' %d'?" ,m_intNo);?
m_pRecordset=m_pConnection->Execute(_bstr_t(strsql),NULL,adCmdText)A
De hecho, para usar C++ para ejecutar SQLServer, lo más importante es comprender las declaraciones SQL para poder ¡Opere fácilmente la base de datos!