#include "mytest3.h" #define MAX_INSERT_COUNT 10 #define MAX_TXT_LENGTH 10 /** BULK INSERT */ void t_bulk_insert(SQLHDBC hdbc, SQLHSTMT hstmt) { SQLRETURN rc; SQLINTEGER i,id[MAX_INSERT_COUNT+1],indicator[MAX_INSERT_COUNT+1]; SQLExecDirect(hstmt, "DROP TABLE my_bulk", SQL_NTS); rc = SQLExecDirect(hstmt, "CREATE TABLE my_bulk (id int)", SQL_NTS); mystmt(hstmt, rc); SQLFreeStmt(hstmt, SQL_CLOSE); rc = SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)SQL_CURSOR_STATIC, 0); mystmt(hstmt, rc); rc = SQLSetStmtAttr(hstmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)MAX_INSERT_COUNT, 0); mystmt(hstmt, rc); rc = SQLSetStmtAttr(hstmt, SQL_ATTR_ROW_BIND_TYPE, sizeof(SQLINTEGER), 0); mystmt(hstmt, rc); rc = SQLBindCol(hstmt, 1, SQL_C_LONG, &id[0], 0, &indicator[0]); mystmt(hstmt, rc); rc = SQLExecDirect(hstmt, "SELECT id FROM my_bulk", SQL_NTS); mystmt(hstmt, rc); rc = SQLFetchScroll(hstmt, SQL_FETCH_NEXT, 0); mystmt_err(hstmt, rc == SQL_NO_DATA_FOUND, rc); for (i= 0; i < MAX_INSERT_COUNT; i++) { id[i]=i+1; indicator[i] = (i ? 0 : SQL_NULL_DATA); } printMessage( "\n total bulk adds : %d", MAX_INSERT_COUNT*2); rc = SQLBulkOperations(hstmt, SQL_ADD); mystmt(hstmt, rc); SQLFreeStmt(hstmt, SQL_UNBIND); SQLFreeStmt(hstmt, SQL_CLOSE); } /** MAIN ROUTINE... */ int main(int argc, char *argv[]) { SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; SQLINTEGER narg; printMessageHeader(); /* * if connection string supplied through arguments, overrite * the default one.. */ for (narg = 1; narg < argc; narg++) { if ( narg == 1 ) mydsn = argv[1]; else if ( narg == 2 ) myuid = argv[2]; else if ( narg == 3 ) mypwd = argv[3]; } myconnect(&henv,&hdbc,&hstmt); if (driver_supports_setpos(hdbc)) { t_bulk_insert(hdbc,hstmt); /* bulk inserts */ } mydisconnect(&henv,&hdbc,&hstmt); printMessageFooter( 1 ); return(0); }