#include #include #include #include #include void checkSuccess(char *value, char *success) { //printf("\"%s\"=\"%s\"\n",value,success); if (!success) { if (!value) { printf("success "); return; } else { printf("failure "); exit(0); } } if (!strcmp(value,success)) { printf("success "); } else { printf("failure "); exit(0); } } void checkSuccess(int value, int success) { //printf("\"%d\"=\"%d\"\n",value,success); if (value==success) { printf("success "); } else { printf("failure "); exit(0); } } int main(int argc, char **argv) { // usage... if (argc<5) { printf("usage: mysql host port socket user password\n"); exit(0); } MYSQL mysql; #ifdef HAVE_MYSQL_REAL_CONNECT_FOR_SURE printf("mysql_init\n"); checkSuccess((long)mysql_init(&mysql),(long)&mysql); printf("\n"); #endif char *host=argv[1]; char *port=argv[2]; char *socket=argv[3]; char *user=argv[4]; char *password=argv[5]; #ifdef HAVE_MYSQL_REAL_CONNECT_FOR_SURE printf("mysql_real_connect\n"); #if MYSQL_VERSION_ID>=32200 checkSuccess((long)mysql_real_connect(&mysql,host,user,password,"", atoi(port),socket,0),(long)&mysql); #else checkSuccess((long)mysql_real_connect(&mysql,host,user,password, atoi(port),socket,0),(long)&mysql); // mysql_select_db... #endif #else checkSuccess((long)mysql_connect(&mysql,host,user,password), (long)mysql); #endif printf("\n"); #ifdef HAVE_MYSQL_PING printf("mysql_ping\n"); checkSuccess(mysql_ping(&mysql),0); printf("\n"); #endif printf("mysql_character_set_name:\n"); checkSuccess((char *)mysql_character_set_name(&mysql),"latin1"); printf("\n"); char *query="drop table testdb.testtable"; mysql_real_query(&mysql,query,strlen(query)); printf("mysql_real_query: create\n"); query="create table testdb.testtable (testtinyint tinyint, testsmallint smallint, testmediumint mediumint, testint int, testbigint bigint, testfloat float, testreal real, testdecimal decimal(2,1), testdate date, testtime time, testdatetime datetime, testyear year, testchar char(40), testtext text, testvarchar varchar(40), testtinytext tinytext, testmediumtext mediumtext, testlongtext longtext, testtimestamp timestamp)"; checkSuccess(mysql_real_query(&mysql,query,strlen(query)),0); printf("\n"); printf("mysql_real_query: insert\n"); query="insert into testdb.testtable values (1,1,1,1,1,1.1,1.1,1.1,'2001-01-01','01:00:00','2001-01-01 01:00:00','2001','char1','text1','varchar1','tinytext1','mediumtext1','longtext1',NULL)"; checkSuccess(mysql_real_query(&mysql,query,strlen(query)),0); checkSuccess(mysql_affected_rows(&mysql),1); query="insert into testdb.testtable values (2,2,2,2,2,2.1,2.1,2.1,'2002-01-01','02:00:00','2002-01-01 02:00:00','2002','char2','text2','varchar2','tinytext2','mediumtext2','longtext2',NULL)"; checkSuccess(mysql_real_query(&mysql,query,strlen(query)),0); checkSuccess(mysql_affected_rows(&mysql),1); printf("\n"); // mysql_insert_id... // mysql_info... printf("mysql_real_query: select\n"); query="select * from testdb.testtable"; checkSuccess(mysql_real_query(&mysql,query,strlen(query)),0); printf("\n"); printf("mysql_field_count:\n"); checkSuccess(mysql_field_count(&mysql),19); printf("\n"); printf("mysql_store_result:\n"); MYSQL_RES *result=mysql_store_result(&mysql); printf("mysql_num_fields:\n"); checkSuccess(mysql_num_fields(result),19); printf("\n"); printf("mysql_num_rows:\n"); checkSuccess(mysql_num_rows(result),2); printf("\n"); printf("mysql_field_seek:\n"); checkSuccess(mysql_field_seek(result,0),0); printf("\n"); printf("mysql_fetch_field/mysql_field_tell:\n"); MYSQL_FIELD *field; field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),1); checkSuccess(field->name,"testtinyint"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),2); checkSuccess(field->name,"testsmallint"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),3); checkSuccess(field->name,"testmediumint"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),4); checkSuccess(field->name,"testint"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),5); checkSuccess(field->name,"testbigint"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),6); checkSuccess(field->name,"testfloat"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),7); checkSuccess(field->name,"testreal"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),8); checkSuccess(field->name,"testdecimal"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),9); checkSuccess(field->name,"testdate"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),10); checkSuccess(field->name,"testtime"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),11); checkSuccess(field->name,"testdatetime"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),12); checkSuccess(field->name,"testyear"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),13); checkSuccess(field->name,"testchar"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),14); checkSuccess(field->name,"testtext"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),15); checkSuccess(field->name,"testvarchar"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),16); checkSuccess(field->name,"testtinytext"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),17); checkSuccess(field->name,"testmediumtext"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),18); checkSuccess(field->name,"testlongtext"); field=mysql_fetch_field(result); checkSuccess(mysql_field_tell(result),19); checkSuccess(field->name,"testtimestamp"); printf("\n"); printf("mysql_field_seek:\n"); checkSuccess(mysql_field_seek(result,0),19); printf("\n"); printf("mysql_fetch_field_direct:\n"); field=mysql_fetch_field_direct(result,0); checkSuccess(field->name,"testtinyint"); field=mysql_fetch_field_direct(result,1); checkSuccess(field->name,"testsmallint"); field=mysql_fetch_field_direct(result,2); checkSuccess(field->name,"testmediumint"); field=mysql_fetch_field_direct(result,3); checkSuccess(field->name,"testint"); field=mysql_fetch_field_direct(result,4); checkSuccess(field->name,"testbigint"); field=mysql_fetch_field_direct(result,5); checkSuccess(field->name,"testfloat"); field=mysql_fetch_field_direct(result,6); checkSuccess(field->name,"testreal"); field=mysql_fetch_field_direct(result,7); checkSuccess(field->name,"testdecimal"); field=mysql_fetch_field_direct(result,8); checkSuccess(field->name,"testdate"); field=mysql_fetch_field_direct(result,9); checkSuccess(field->name,"testtime"); field=mysql_fetch_field_direct(result,10); checkSuccess(field->name,"testdatetime"); field=mysql_fetch_field_direct(result,11); checkSuccess(field->name,"testyear"); field=mysql_fetch_field_direct(result,12); checkSuccess(field->name,"testchar"); field=mysql_fetch_field_direct(result,13); checkSuccess(field->name,"testtext"); field=mysql_fetch_field_direct(result,14); checkSuccess(field->name,"testvarchar"); field=mysql_fetch_field_direct(result,15); checkSuccess(field->name,"testtinytext"); field=mysql_fetch_field_direct(result,16); checkSuccess(field->name,"testmediumtext"); field=mysql_fetch_field_direct(result,17); checkSuccess(field->name,"testlongtext"); field=mysql_fetch_field_direct(result,18); checkSuccess(field->name,"testtimestamp"); printf("\n"); #if 0 printf("mysql_fetch_fields:\n"); field=mysql_fetch_fields(result); checkSuccess(field[0].name,"testtinyint"); checkSuccess(field[1].name,"testsmallint"); checkSuccess(field[2].name,"testmediumint"); checkSuccess(field[3].name,"testint"); checkSuccess(field[4].name,"testbigint"); checkSuccess(field[5].name,"testfloat"); checkSuccess(field[6].name,"testreal"); checkSuccess(field[7].name,"testdecimal"); checkSuccess(field[8].name,"testdate"); checkSuccess(field[9].name,"testtime"); checkSuccess(field[10].name,"testdatetime"); checkSuccess(field[11].name,"testyear"); checkSuccess(field[12].name,"testchar"); checkSuccess(field[13].name,"testtext"); checkSuccess(field[14].name,"testvarchar"); checkSuccess(field[15].name,"testtinytext"); checkSuccess(field[16].name,"testmediumtext"); checkSuccess(field[17].name,"testlongtext"); checkSuccess(field[18].name,"testtimestamp"); printf("\n"); #endif printf("mysql_fetch_row:\n"); MYSQL_ROW row; row=mysql_fetch_row(result); checkSuccess(row[0],"1"); checkSuccess(row[1],"1"); checkSuccess(row[2],"1"); checkSuccess(row[3],"1"); checkSuccess(row[4],"1"); checkSuccess(row[5],"1.1"); checkSuccess(row[6],"1.1"); checkSuccess(row[7],"1.1"); checkSuccess(row[8],"2001-01-01"); checkSuccess(row[9],"01:00:00"); checkSuccess(row[10],"2001-01-01 01:00:00"); checkSuccess(row[11],"2001"); checkSuccess(row[12],"char1"); checkSuccess(row[13],"text1"); checkSuccess(row[14],"varchar1"); checkSuccess(row[15],"tinytext1"); checkSuccess(row[16],"mediumtext1"); checkSuccess(row[17],"longtext1"); printf("\n"); printf("mysql_fetch_lengths:\n"); unsigned long *lengths; lengths=mysql_fetch_lengths(result); checkSuccess(lengths[0],1); checkSuccess(lengths[1],1); checkSuccess(lengths[2],1); checkSuccess(lengths[3],1); checkSuccess(lengths[4],1); checkSuccess(lengths[5],3); checkSuccess(lengths[6],3); checkSuccess(lengths[7],3); checkSuccess(lengths[8],10); checkSuccess(lengths[9],8); checkSuccess(lengths[10],19); checkSuccess(lengths[11],4); checkSuccess(lengths[12],5); checkSuccess(lengths[13],5); checkSuccess(lengths[14],8); checkSuccess(lengths[15],9); checkSuccess(lengths[16],11); checkSuccess(lengths[17],9); printf("\n"); printf("mysql_fetch_row:\n"); row=mysql_fetch_row(result); checkSuccess(row[0],"2"); checkSuccess(row[1],"2"); checkSuccess(row[2],"2"); checkSuccess(row[3],"2"); checkSuccess(row[4],"2"); checkSuccess(row[5],"2.1"); checkSuccess(row[6],"2.1"); checkSuccess(row[7],"2.1"); checkSuccess(row[8],"2002-01-01"); checkSuccess(row[9],"02:00:00"); checkSuccess(row[10],"2002-01-01 02:00:00"); checkSuccess(row[11],"2002"); checkSuccess(row[12],"char2"); checkSuccess(row[13],"text2"); checkSuccess(row[14],"varchar2"); checkSuccess(row[15],"tinytext2"); checkSuccess(row[16],"mediumtext2"); checkSuccess(row[17],"longtext2"); printf("\n"); printf("mysql_data_seek:\n"); mysql_data_seek(result,0); row=mysql_fetch_row(result); checkSuccess(row[0],"1"); printf("\n"); printf("mysql_row_tell/mysql_row_seek:\n"); mysql_data_seek(result,0); MYSQL_ROW_OFFSET zerorowoffset=mysql_row_tell(result); row=mysql_fetch_row(result); checkSuccess(row[0],"1"); row=mysql_fetch_row(result); checkSuccess(row[0],"2"); mysql_row_seek(result,zerorowoffset); row=mysql_fetch_row(result); checkSuccess(row[0],"1"); printf("\n"); printf("mysql_eof:\n"); mysql_data_seek(result,1); row=mysql_fetch_row(result); checkSuccess(mysql_eof(result),1); printf("\n"); mysql_free_result(result); printf("mysql_real_query: select\n"); query="select * from testdb.testtable"; checkSuccess(mysql_real_query(&mysql,query,strlen(query)),0); printf("\n"); printf("mysql_use_result:\n"); result=mysql_use_result(&mysql); printf("\n"); printf("mysql_fetch_row:\n"); row=mysql_fetch_row(result); checkSuccess(row[0],"1"); checkSuccess(row[1],"1"); checkSuccess(row[2],"1"); checkSuccess(row[3],"1"); checkSuccess(row[4],"1"); checkSuccess(row[5],"1.1"); checkSuccess(row[6],"1.1"); checkSuccess(row[7],"1.1"); checkSuccess(row[8],"2001-01-01"); checkSuccess(row[9],"01:00:00"); checkSuccess(row[10],"2001-01-01 01:00:00"); checkSuccess(row[11],"2001"); checkSuccess(row[12],"char1"); checkSuccess(row[13],"text1"); checkSuccess(row[14],"varchar1"); checkSuccess(row[15],"tinytext1"); checkSuccess(row[16],"mediumtext1"); checkSuccess(row[17],"longtext1"); row=mysql_fetch_row(result); checkSuccess(row[0],"2"); checkSuccess(row[1],"2"); checkSuccess(row[2],"2"); checkSuccess(row[3],"2"); checkSuccess(row[4],"2"); checkSuccess(row[5],"2.1"); checkSuccess(row[6],"2.1"); checkSuccess(row[7],"2.1"); checkSuccess(row[8],"2002-01-01"); checkSuccess(row[9],"02:00:00"); checkSuccess(row[10],"2002-01-01 02:00:00"); checkSuccess(row[11],"2002"); checkSuccess(row[12],"char2"); checkSuccess(row[13],"text2"); checkSuccess(row[14],"varchar2"); checkSuccess(row[15],"tinytext2"); checkSuccess(row[16],"mediumtext2"); checkSuccess(row[17],"longtext2"); checkSuccess((long)mysql_fetch_row(result),0); printf("\n"); printf("mysql_real_query: drop\n"); query="drop table testdb.testtable"; checkSuccess(mysql_real_query(&mysql,query,strlen(query)),0); printf("\n"); printf("mysql_escape_string:\n"); char to[100]; char from[100]; sprintf(from," ' \" \n \r \\ ; %c ",26); checkSuccess(mysql_escape_string(to,from,15),21); checkSuccess(to," \\' \\\" \\n \\r \\\\ ; \\Z "); printf("\n"); printf("mysql_real_escape_string:\n"); checkSuccess(mysql_real_escape_string(&mysql,to,from,15),21); checkSuccess(to," \\' \\\" \\n \\r \\\\ ; \\Z "); printf("\n"); printf("mysql_get_*_info:\n"); printf("server: %s\n",mysql_get_server_info(&mysql)); printf("client: %s\n",mysql_get_client_info()); printf("host: %s\n",mysql_get_host_info(&mysql)); printf("proto: %d\n",mysql_get_proto_info(&mysql)); printf("\n"); // mysql_error // mysql_errno // mysql_thread_id // mysql_change_user // mysql_send_query // mysql_read_query_result // mysql_create_db // mysql_drop_db // mysql_shutdown // mysql_refresh // mysql_reload // mysql_debug // mysql_dump_debug_info // mysql_kill // mysql_stat // mysql_list_dbs // mysql_list_tables // mysql_list_fields // mysql_list_processes // mysql_options // mysql_odbc_escape_string // myodbc_remove_escape mysql_close(&mysql); }