全部博文(930)
分类: C/C++
2008-09-15 23:39:43
请确保你已经安装了必要的开发环境,比如gcc, mysql等等. 下面是编译一个程序所需要安装的软件包的列表 (Ubuntu为例)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h>
int main(int argc, char *argv[])
{
MYSQL my_connection;
MYSQL_RES *res_ptr; /*指向检索的结果存放地址的指针*/
MYSQL_ROW sqlrow; /*返回的记录信息*/
MYSQL_FIELD *fd; /*字段结构指针*/
char aszflds[25][25]; /*用来存放各字段名*/
int res; /*执行查询操作后的返回标志*/
int i,j,k;
mysql_init(&my_connection);
if(mysql_real_connect(&my_connection, "localhost", "root","zj077543","test",0,NULL,0))
/*mysql_init和mysql_real_connect没什么好说的,一般照写就OK了*/
{
printf("Connection success\n");
/*select start*/
res = mysql_query(&my_connection, "select * from user");
if (res)
{
printf("SELECT error:%s\n",mysql_error(&my_connection));
}
else
{
res_ptr=mysql_store_result(&my_connection);
if(res_ptr)
{
printf("Retrieved %lu Rows\n",(unsigned long)mysql_num_rows(res_ptr));
/*取得各字段名*/
for(i=0;fd=mysql_fetch_field(res_ptr);i++)
strcpy(aszflds[i],fd->name);
/*输出各条记录*/
printf("下面是检索出的各条记录信息:\n");
j=mysql_num_fields(res_ptr);
for(i=0;i<j;i++)
printf("%s\t",aszflds[i]);
printf("\n");
while((sqlrow=mysql_fetch_row(res_ptr)))
{
for(i=0;i<j;i++)
printf("%s\t",sqlrow[i]);
printf("\n");
}
if (mysql_errno(&my_connection))
{
fprintf(stderr,"Retrive error:s\n",mysql_error(&my_connection));
}
mysql_free_result(res_ptr);
}
}
/*select end*/
mysql_close(&my_connection);
}
else{
fprintf(stderr, "Connection failed\n");
if (mysql_errno(&my_connection))
{
fprintf(stderr, "Connection error %d: %s\n",
mysql_errno(&my_connection),
mysql_error(&my_connection));
}
}
return EXIT_SUCCESS;
}
insert的:
/*insert start*/
res = mysql_query(&my_connection, "insert into user values(6,'jimmy',15)");
if (res)
{
printf("INSERT error %d:%s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
}
else
{
printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connection));
/*里头的函数返回受表中影响的行数*/
}
/*insert end*/
update和delete与insert类似,这里就不说了.就insert复杂点.
MySQL中有一个特殊的脚本,叫做mysql_config. 它会为你编译MySQL客户端,并连接到MySQL服务器提供有用的信息.你需要使用下面两个选项.
1. --libs 选项 - 连接MySQL客户端函数库所需要的库和选项.
$ mysql_config --libs
输出:
-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto
2. --cflags 选项 - 使用必要的include文件的选项等等.$ mysql_config --cflags
输出:
-I/usr/include/mysql -g -pipe -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing
你需要将上面两个选项加入到对源文件的编译命令中. 所以,要编译上面的程序,要使用下面的命令:$ gcc -o database1 $(mysql_config --cflags) database1.c $(mysql_config --libs)
$ ./database1