#include #include #include #include /* Static SQL */ #define DROP_SAMPLE_TABLE "DROP TABLE IF EXISTS test_table" #define CREATE_SAMPLE_TABLE "CREATE TABLE test_table(col1 INT,\ col2 VARCHAR(40),\ col3 SMALLINT,\ col4 TIMESTAMP)" /* set default options */ static char *opt_db="mysql"; static char *opt_user="root"; static char *opt_password=0; static char *opt_host=0; static char *opt_unix_socket="/GORDON/MySQL/data_new/mysql.sock"; static unsigned int opt_port; /******************************************************** * my_prepare * *********************************************************/ static MYSQL_STMT *my_prepare(MYSQL *mysql, const char *stmt_buff, unsigned int exp_errno) { /* stmt_buff contains the statement to be prepared */ /* exp_errno contains the errno expected */ MYSQL_STMT *stmt; fprintf(stdout, "my_prepare: %s ", stmt_buff); /* Prepare an statement */ stmt = mysql_prepare(mysql, stmt_buff, strlen(stmt_buff)); if ( (NULL == stmt) || ( 0 != exp_errno )) { if ( exp_errno == mysql_errno(mysql) ) { fprintf(stdout, " OK, got expected error\n"); return (NULL); } else { fprintf(stdout, " FAILURE\n"); fprintf(stderr, " mysql_prepare(), %s failed\n", stmt_buff); fprintf(stderr, " expected: %d \n", exp_errno); fprintf(stderr, " got: %d %s\n",mysql_errno(mysql),mysql_error(mysql)); exit(0); } } fprintf(stdout, " OK\n"); return (stmt); } /******************************************************** * my_execute * *********************************************************/ static void my_execute(MYSQL_STMT *stmt) { fprintf(stdout, "my_execute: "); if (mysql_execute(stmt)) { fprintf(stdout, " FAILURE, mysql_execute() failed\n"); fprintf(stderr, " stmt_error: %s\n", mysql_stmt_error(stmt)); exit(0); } fprintf(stdout, " OK\n"); } static void create_sample_table( MYSQL *mysql ) { if (mysql_query(mysql, DROP_SAMPLE_TABLE)) { fprintf(stderr, " DROP TABLE failed\n"); fprintf(stderr, " %s\n", mysql_error(mysql)); exit(0); } if (mysql_query(mysql, CREATE_SAMPLE_TABLE)) { fprintf(stderr, " CREATE TABLE failed\n"); fprintf(stderr, " %s\n", mysql_error(mysql)); exit(0); } } static void drop_sample_table( MYSQL *mysql ) { if (mysql_query(mysql, DROP_SAMPLE_TABLE)) { fprintf(stderr, " DROP TABLE failed\n"); fprintf(stderr, " %s\n", mysql_error(mysql)); exit(0); } } int main(void) { MYSQL *mysql; MYSQL_STMT *stmt; fprintf(stdout, " Establishing a connection to the database ...\n"); /* Create our mysql structure */ if (!(mysql = mysql_init(NULL))) { fprintf(stderr, " mysql_init() failed\n"); exit(0); } /* We load any defaults from the my.cnf file for this application */ if (mysql_options(mysql, MYSQL_READ_DEFAULT_GROUP, "manual")) { fprintf(stderr, " mysql_options() failed\n"); fprintf(stderr, " %s\n", mysql_error(mysql)); mysql_close(mysql); exit(0); } /* Make the actual connection to the database */ if (!(mysql_real_connect(mysql, opt_host, opt_user, opt_password, opt_db ? opt_db:"test", opt_port, opt_unix_socket, 0))) { fprintf(stderr, " connection failed\n"); fprintf(stderr, " %s\n", mysql_error(mysql)); mysql_close(mysql); exit(0); } fprintf(stdout, " OK\n"); /* set autocommit to ON */ mysql_autocommit(mysql, 1); /* set autocommit to ON */ create_sample_table(mysql); stmt=my_prepare(mysql, "select col1 FROM test_table where col1=1 union distinct \ select col1 FROM test_table where col1=2 ", 0) ; /* Execute the SELECT query */ my_execute( stmt ); my_execute( stmt ); drop_sample_table(mysql); /* close the connection */ fprintf(stdout, " closing the connection ..."); mysql_close(mysql); fprintf(stdout, " OK\n"); fprintf(stdout, "\n\n success !!! \n"); return 0; }