VC debe proporcionar código para conectarse a la base de datos SQL SERVER
Crea un nuevo proyecto de aplicación de consola Win32 en VC 6.0 y nombra el proyecto ODBCTest
Luego, agregue el archivo ODBCTest.c ya escrito a los archivos fuente del proyecto, compílelo y ejecútelo. Una vez completada la ejecución, los datos de la tabla Student en SQL Server son la copia de seguridad de la tabla Student en Kingbase.
Código fuente experimental. A continuación se muestra el código fuente con algunos comentarios como referencia.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#definir SNO_LEN 30
# definir NAME_LEN 50
#define DEPART_LEN 100
#define SSEX_LEN 5
intmain()
{
/* Paso 1: Definir identificadores y variables
// Las variables que comienzan con king representan conexiones a variables KINGBASEES
// Las variables que comienzan con server son variables de conexión de SQLSERVER
SQLHENV kinghenv, serverhenv;
SQLHDBC kinghdbc, serverhdbc; // Identificador de conexión
SQLHSTDBC kinghdbc, serverhdbc;
SQLHSTDBC kinghdbc, serverhdbc;
SQLHDBC kinghdbc, serverhdbc;
Sno[SNO_LEN];
SQLINTEGER sAge
SQLINTEGER cbAge = 0, cbSno = SQL_NTS, cbSex = SQL_NTS, cbName = SQL_NTS, cbDepart = SQL_NTS;
/* Paso 2 Inicialice el entorno*/
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, amp; kinghenv); p>
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE y kinghenv);
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE y serverhenv);
ret = SQLSetEnvAttr(kinghenv, SQL_ATTR_ODBC_VERSION , (void*)SQL_OV_ODBC3, 0);
ret = SQLSetEnvAttr(serverhenv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
/* No. Paso 3: Establecer un conexión*/
ret = SQLAllocHandle(SQL_HANDLE_ DBC, kinghenv, amp; kinghdbc);
ret = SQLAllocHandle(SQL_HANDLE_DBC, serverhenv, amp; serverhdbc);
p>
ret = SQLConnect(kinghdbc,
"KINGBASEES ODBC",SQL_NTS,
"SYSTEM",SQL_NTS,
p>
"MANAGER", SQL_NTS);
If (!SQL_SUCCEEDED(ret))//devuelve un valor de error si la conexión falló
devuelve -1; p> p>
ret = SQLConnect(serverhdbc,
"SQLServer",SQL_NTS,
"sa",SQL_NTS,
"sa", SQL_NTS) ;
if (!SQL_ SUCCEEDED(ret))//Si la conexión falla, devuelve un valor de error
return-1;
/* Paso 4: Mango de declaración de inicialización*/
ret = SQLAllocHandle(SQL_HANDLE_STMT, kinghdbc, amp.kinghstmt);
ret = SQLSetStmtAttr(kinghstmt, SQL_ATTR_ROW_BIND_TYPE, (SQLPOINTER)SQL_BIND_BY_COLUMN, SQL_IS_INTEGER) ;
p>ret = SQLAllocHandle(SQL_HANDLE_STMT, serverhdbc, amp; serverhstmt);
/* Paso 5: Ejecute la declaración de dos maneras */
/* Usando parámetros Declaración preparada */
ret = SQLPrepare(serverhstmt, "INSERT INTO STUDENT (SNO, SNAME, SSEX, SAGE, SDEPT) VALUES (, , , ,)", SQL_NTS); p>
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_ INFO)
{
ret = SQLBindParameter(serverhstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, SNO_LEN, 0, sSno , 0, &cbSno);cbSex);
ret = SQLBindParameter(serverhstmt, 4, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &sAge, 0, &cbAge);
ret = SQLBindParameter(serverhstmt, 5, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR.DEPART_LEN, 0, & sAge, 0, & cbAge.DEPART_LEN, 0, sDepart, 0, & cbDepart);
}
/* Ejecutar sentencia SQL*/
ret = SQLExecDirect(kinghstmt, "SELECT * FROM STUDENT", SQL_NTS
if (ret == SQL_SUCCESS || ret); == SQL_SUCCESS_WITH_INFO)
{
ret = SQLBi
ndCol(kinghstmt, 1, SQL_C_CHAR, sSno, SNO_LEN, y cbSno);
ret = SQLBindCol(kinghstmt, 2, SQL_C_CHAR, sName, NAME_LEN, y cbName); ret = SQLBindCol(kinghstmt, 3, SQL_C_CHAR, sSex, SSEX_LEN, & cbSex);
ret = SQLBindCol(kinghstmt, 4, SQL_C_LONG, &sAge, 0, &cbAge);
ret = SQLBindCol(kinghstmt, 4, SQL_C_LONG, &sAge, 0, &cbAge);
p>ret = SQLBindCol(kinghstmt, 5, SQL_C_CHAR sDepart, DEPART_LEN, amp; cbDepart);
}