Code:
1.环境配置
一般情况下安装了MySQL的机器很少安装开发包,这个需要注意。也就是您需要在程序中包含这样的语句:
#include <mysql.h>
如果在编译的时候提示含有类似于找不到 mysql.h 的信息,这就说明您没有安装相关开发包。
还有您必须建立一个数据库与一些表,这个在本文中会使用。
2.我们先链接数据库。
/****连接****数据库****/
#include <mysql.h> /*包含文件*/
MYSQL *myconnect = NULL; /*定义一个MYSQL类型的指针,它代表的是MySQL数据库的操作对象*/
GtkWidget *disconnect (void) /*这里是我原先一个程序中用过的函数,并不属于本文重点*/
{
char *user = "root", *pwd = "", *dbname = "test"; /*这里要作适当修改,用数据库用户root,用户密码为空,连接test数据库*/
myconnect = mysql_init(myconnect); /*用函数mysql_init初始化myconnect*/
if (mysql_real_connect (myconnect, "localhost", user, pwd,dbname,MYSQL_PORT,NULL,0)== NULL)
{
error("未能连接上数据库.");
}
/*用函数mysql_real_connect连接数据库,它需要8个参数,与以上对应分别是:1.初始化的MySQL结构,2.所要链接的数据库的IP地址或主机名,3.链接数据库的用户,4.用户口令,5.数据库名,6.端口号,上边的MYSQL_PORT是一个宏,如果一切都是默认的话不用显式定义,7.套接字,一般为NULL,8.这个参数一般为0。当然,并不是8个参数都必须写上,一些参数可以以后再用。*/
}
3.典型操作
插入操作:
gchar query_buf [100]; /*定义一个数组用来存放SQL语句*/
const gchar *username,*passwd,*passwd_ffirm,*email,*email_ffirm;
................/*这里省略对username等的赋值语句*/
sprintf (query_buf,"INSERT INTO Users values (\'%s\',\'%s\',\'%s\',\'%s\')",NULL,username,passwd,email);/*将语句存放在数组query_buf中,我在数据库的Users表中第一个是自动增长的ID,所以第一个需插入NULL。注意:SQL中的单引号等不能直接出现在C语言中,需要用转义字符*/
if (mysql_query (myconnect,query_buf) == 0) /*mysql_query执行函数执行成功返回0*/
{
ok("注册成功.");
}
else
{ error("注册失败!可能是已经存在这个用户名称了。请尝试换一个用户名。"); }
删除等操作类似。
SELECT操作:
MYSQL_RES *sqlres;