C语言操作mysql数据库函数说明
如何使用C语言进行MySQL数据库的连接,对于一些初学者来说,这是困难的,今天我们给大家介绍了一些C语言操作mysql函数的相关介绍。
这里归纳了CAPI可使用的函数。
与MySQL交互时,应用程序应使用该一般性原则:
1.通过调用mysql_library_init(),初始化MySQL库。库可以是mysqlclientC客户端库,或mysqld嵌入式服务器库,具体情况取决于应用程序是否与“-libmysqlclient”或“-libmysqld”标志链接。
2.通过调用mysql_init()初始化连接处理程序,并通过调用mysql_real_connect()连接到服务器。
3.发出SQL语句并处理其结果。(在下面的讨论中,详细介绍了使用它的方法)。
4.通过调用mysql_close(),关闭与MySQL服务器的连接。
5.通过调用mysql_library_end(),结束MySQL库的使用。
介绍常用到的MYSQL相关的C变量类型。这些类型在我们后面定义变量的时候会用到
1、MYSQL
要连接MYSQL,必须建立MYSQL实例,通过mysql_init初始化方能开始进行连接
示例:
MYSQLmysql;#创建MYSQL实例
mysql_init(&mysql);#初始化开始进行连接
2、MYSQL_RES
这个结构代表返回行的一个查询的(SELECT,SHOW,DESCRIBE,EXPLAIN)的结果。返回的数据称为“数据集”。从数据库读取数据,最后就是从MYSQL_RES中读取数据。
PS:类似于java里面的ResultSet变量一样,将结果集存入到此变量中再从它里面去读数据。
3、MYSQL_ROW
这是一个行数据的类型安全(type-safe)的表示。当前它实现为一个计数字节的字符串数组。行通过调用mysql_fetch_row()获得
4、MYSQL_FIELD
你可以通过重复调用mysql_fetch_field()对每一列获得MYSQL_FIELD结构。这个结构包含字段信息,例如字段名、类型和大小。
PS:此变量定义的是列的相关属性问题!
示例一:实现遍历查询select*fromtable-name操作
#include”Windows.h”
#include”mysql.h”
#pragmacomment(lib,”libmySQL.lib”)
intmain()
{
MYSQLmysql;//mysql连接
MYSQL_RES*res;//这个结构代表返回行的一个查询结果集
MYSQL_ROWrow;//一个行数据的类型安全(type-safe)的表示
char*query;//查询语句
intt,r;
mysql_init(&mysql);
if(!mysql_real_connect(&mysql,”localhost”,”root”,”123″,”test”,3306,NULL,0))
{
printf(“Errorconnectingtodatabase:%s”,mysql_error(&mysql));
}else
printf(“Connected…”);
query=”SETCHARACTERSETutf8″;//设置编码
t=mysql_real_query(&mysql,query,(unsignedint)strlen(query));
if(t)
{
printf(“编码设置失败”);
}
query=”select*froma”;
t=mysql_real_query(&mysql,query,(unsignedint)strlen(query));
if(t)
{
printf(“执行查询时出现异常:%s”,mysql_error(&mysql));
}else
printf(“[%s]构建成功”,query);
res=mysql_store_result(&mysql);
while(row=mysql_fetch_row(res))
{
/*
for(t=0;t
{
printf(“%s”””,row[t]);
}
*/
printf(“%s”,row[1]);表示查询的第几个字段的!也还可以遍历全部字段信息
printf(“\\n”);
}
mysql_free_result(res);
mysql_close(&mysql);
return0;
}
示例二:执行插入、更新、删除操作
#include”windows.h”
#include”mysql.h”
#pragmacomment(lib,”libmySQL.lib”)
intmain()
{
MYSQLmysql;//mysql连接
MYSQL_RES*res;//这个结构代表返回行的一个查询结果集
MYSQL_ROWrow;//一个行数据的类型安全(type-safe)的表示
char*query;//查询语句
intt,r;
mysql_init(&mysql);
if(!mysql_real_connect(&mysql,”localhost”,”root”,”123″,”test”,3306,NULL,0))
{
printf(“Errorconnectingtodatabase:%s”,mysql_error(&mysql));
}else
printf(“Connected…”);
query=”SETCHARACTERSETutf8″;//设置编码
t=mysql_real_query(&mysql,query,(unsignedint)strlen(query));
if(t)
{
printf(“编码设置失败”);
}
query=”insertintoa(name,age)values('w',9)”;
t=mysql_real_query(&mysql,query,(unsignedint)strlen(query));
if(t)
{
printf(“执行查询时出现异常:%s”,mysql_error(&mysql));
}else
printf(“[%s]构建成功”,query);
mysql_close(&mysql);
return0;
}