raywill:~ raywill$ cat test.c
#include <stdio.h>
#include <mysql.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
MYSQL *mysql,*sock;
MYSQL_ROW row;
MYSQL_RES *result;
mysql = mysql_init(NULL);
int port = 9519;
char *host = "1.1.44.44";
char *user = "root";
char *pass = "";
char *db = "dbme";
if (!(sock = mysql_real_connect(mysql, host, user, pass, db, port, NULL, CLIENT_MULTI_STATEMENTS))) {
//if (!(sock = mysql_real_connect(mysql, host, user, pass, db, port, NULL, 0))) {
fprintf(stderr, "Couldn't connect to engine!\n%s\n\n", mysql_error(mysql));
perror("");
exit(1);
}
int i = 0;
char *sql[3] = {
"delete from t; insert into t values (1); select * from t; select * from t; select * from t;",
"select 1;select from sdfsdf ;select 3, '^^^^^^^^^^^^^';",
"create table if not exists t(i int primary key comment 'xiaochuxxx'); delete from t where i > 0; insert into t values(3); insert into t values (2);"
};
for (i = 0; i < 3; ++i) {
mysql_query(sock, sql[i]);
do
{
printf("sql: %s\n", sql[i]);
printf("total affected rows: %lld\n", mysql_affected_rows(sock));
result= mysql_store_result(sock);
if (!result)
{
if(mysql_field_count(sock) == 0) {
// query does not return data
// (it was not a SELECT)
int num_rows = mysql_affected_rows(sock);
printf("Affected row %d\n", num_rows);
} else {
printf("Got fatal error processing query. %s\n", mysql_error(sock));
exit(1);
}
} else {
row = mysql_fetch_row(result);
printf("row value: %s\n", row[0]);
mysql_free_result(result);
}
} while (!mysql_next_result(sock));
printf("no more result\n\n");
}
return 0;
}
编译方法:
raywill:~ raywill$ mysql_config --cflags --libs
-I/usr/local/include
-L/usr/local/lib -lmysqlclient
raywill:~ raywill$ gcc test.c -o testbin `mysql_config --cflags --libs`
raywill:~ raywill$ ./testbin