以下为使用C API写的操作数据库school的程序,保存文件名为mysql.c。
#include <stdio.h>
#include <string.h>
#include <mysql.h>
int main()
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
char sql[50];
int t;
sprintf(sql,"select*from teacher");
mysql_init(&mysql);
if(!mysql_real_connect(&mysql,"localhost","root","","school",0,NULL,0))
printf("/nconnecting database error: %s/n",mysql_error(&mysql));
else
printf("/nconnecting database success!/n");
t= mysql_real_query(& mysql, sql, (unsigned int)strlen(sql));
if(t)
printf("query error: %s/n",mysql_error(&mysql));
else
{
res = mysql_store_result(&mysql);
while(row = mysql_fetch_row(res))
{
for(t = 0; t < mysql_num_fields(res); t++)
printf("%s",row[t]);
printf("/n");
}
}
printf("release the space of the result set.../n");
mysql_free_result(res);
mysql_close(&mysql);
printf("sql errror! %s/n",mysql_error(&mysql));
return 0;
}
我使用下列命令进行编译:
gcc –o mysql mysql.c -I /root/Software/mysql/include/mysql -L /usr/lib –lmysqlclient,
但是却出现了连接错误,错误代码如下:
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status。
然后我改变了编译的参数,使用如下命令进行编译:
gcc -o mysql mysql.c /usr/lib/mysql/libmysqlclient.so.15 -I /root/Software/mysql/include/mysql
也就是说把库文件当做源文件使用就可以了。
我也不知道是什么原因,按理说第一种方法是可以的。我在网上看到有人说可能是mysql的库做的有问题。