How to Manipulate Data of MySQL Tables on Mac OS X
Published on February 27, 2011 by
I was looking for a tutorial to fetch data from MySQL on Mac OS X or Linux flavors. This helped me. I just modified it a bit. After saving the following code as myclient.c:
/*
See url for more info:
http://www.cyberciti.biz/tips/linux-unix-connect-mysql-c-api-program.html
*/
#include
#include
#define Q1 "insert into test (a , b) values (? , ?)"
int main(void) {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
/* Change me */
char *server = "localhost";
char *user = "root";
char *password = "";
char *database = "SALESMANAGER";
int i=0;
conn = mysql_init(NULL);
/* Connect to database */
if (!mysql_real_connect(conn, server,
user, password, database, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
/* send SQL query */
if (mysql_query(conn, "select * from countries")) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
res = mysql_use_result(conn);
/* output table name */
printf("Result:\n");
while ((row = mysql_fetch_row(res)) != NULL){
for(i=0;i<mysql_num_fields(res);i++){
printf("%s \t", row[i]);
}
printf("\n");
}
/* INSERTING USING PREPARED STATEMENT */
MYSQL_STMT *s1;
MYSQL_BIND b1[2];
long testint1=0;
long testint2=0;
int ii;
s1=mysql_stmt_init(conn);
if (!s1)
{
fprintf(stderr, " mysql_stmt_init(), out of memory\n");
exit(-1);
}
memset(b1, 0, sizeof(b1));
b1[0].buffer_type=MYSQL_TYPE_LONG;
b1[0].buffer=(void *) &testint1;
b1[1].buffer_type=MYSQL_TYPE_LONG;
b1[1].buffer=(void *) &testint2;
if (mysql_stmt_prepare(s1, Q1, strlen(Q1)))
{
fprintf(stderr, " mysql_stmt_prepare(), 1 INSERT failed\n");
fprintf(stderr, " %s\n", mysql_stmt_error(s1));
exit(0);
}
if (mysql_stmt_bind_param(s1, b1))
{
fprintf(stderr, " mysql_stmt_bind_param() failed\n");
fprintf(stderr, " %s\n", mysql_stmt_error(s1));
exit(0);
}
for (ii=0;ii<20;ii++)
{
testint1=ii;
testint2=ii*2;
if (mysql_stmt_execute(s1))
{
fprintf(stderr, " mysql_stmt_execute(), 1 failed\n");
fprintf(stderr, " %s\n", mysql_stmt_error(s1));
exit(0);
}
}
/* close connection */
mysql_free_result(res);
mysql_close(conn);
return 0;
}
Just run the following command in terminal to build myclientRunable which is excuteable:
gcc -o myclientRunable $(mysql_config --cflags) myclient.c $(mysql_config --libs)
Posted in Cocoa/Objective-C, Linux
No Comments