c++与mysql数据库连接,c语言如何和mysql数据库连接
http://www.mysql.com/doc/en/C.html
[转载自http://homepage.qdcatv.com.cn/antonio/mysql/mysql.htm]
执行查询有以下步骤。首先执行查询,然后保存结果,
你得到的是一个子集。这里有一个小例子:
#包括
#包括
#包含“mysql.h”
MYSQL mysql
MYSQL _ RES * res
MYSQL_ROW行;
无效exiterr(int exitcode)
{
fprintf( stderr, %s\n ,MySQL _ error(MySQL));
退出(exit code);
}
int main()
{
uint I=0;
如果(!(mysql_connect( mysql,主机,用户名,密码))
exit err(1);
if (mysql_select_db( mysql, payroll ))
exit err(2);
if (mysql_query( mysql, SELECT name,rate FROM emp_master ))
exit err(3);
如果(!(res=mysql_store_result( mysql)))
exit err(4);
while((row=MySQL _ fetch _ row(RES))){
for(I=0;I MySQL _ num _ fields(RES);我)
printf(%s\n ,行[i])。
}
MySQL _ free _ result(RES);
MySQL _ close(MySQL);
}
mysql_query函数会将查询发送到服务器,如果查询成功,则调用mysql_store_result。
该函数将分配一个MYSQL_RES结构,并从服务器检索一个结果集。你可以用
Mysql_fetch_row函数来查看数据。这样做,你会得到一个MYSQL_ROW指针号。
根据中的一行。MYSQL_ROW指针是一个简单的字符串数组。的所有数据类型都转换为
将字符串发送给客户端。
mysql_num_fields函数将告诉您返回的列数。可以继续调用mysql_fetch_row
直到它返回一个空指针来获取查询中的每一行。
注意,在这个例子中,我们没有检查具有空指针的列。如果不使用包含非空列的表,那么
您必须检查特殊行的列是否为空。
一旦使用完结果集,就必须释放它。这是通过mysql_free_result实现的。
最后调用mysql_close关闭你和数据库的连接。
查看结果集
不用调用mysql_fetch_row就可以知道返回的结果集中有多少行。这是由
int MySQL _ num _ rows(MySQL _ RES * result)。
切换到下一个mysql_fetch_row调用返回的行,您可以使用
void MySQL _ data _ seek(MySQL _ RES * RES,uintoffset)更改为任意行。
获取更多信息
您可以使用这些额外的函数来找出关于查询的更多信息,并从服务器获取它。
这些信息。
如果执行更新、插入或删除查询,可以使用
Int mysql_affected_rows,找出你影响了多少行数据。
如果您的数据库中有二进制数据,了解数据的长度会很有用。无符号的
int * MySQL _ fetch _ lengths(MySQL _ RES * MySQL)将返回一个列,指示结果集中的每一列。
长度为的整数数组。
当插入带有AUTO_INCREMENT列的表时,可以使用
Int mysql_insert_ID(MYSQL *mysql)找出生成行的ID。
======================
我成功连接了!
# include /include/MySQL/MySQL . h /*是绝对路径*/
#包含stdio.h
int main(int argc,char *argv[])
{
char *user=root ,*pwd=mysql ,* dbname= mysql
MYSQL mysql
MYSQL _ RES * mysql _ ret
MYSQL _ ROW mysql _ row
无符号长整型num _ rows
int ret
MySQL _ init(MySQL);
if(mysql_real_connect( mysql,NULL,user,pwd,dbname,0,NULL,0))
{
printf(连接成功!\ n’);
ret=mysql_query( mysql, select * from user );
如果(!ret)
{
printf(查询成功!\ n’);
MySQL _ ret=MySQL _ store _ result(MySQL);
if(mysql_ret!=空)
{
printf(存储结果成功!\ n’);
num _ rows=MySQL _ num _ rows(MySQL _ ret);
if(num_rows!=0)
{
printf(%d\n ,num _ rows);
while(MySQL _ row=MySQL _ fetch _ row(MySQL _ ret))
{
printf( % s \ t % s \ t % s \ t % s \ t % s \ t % s \ t % s \ t % s \ n ,mysql_row[0],mysql_row[1],mysql_row[2],mysql_row[3],mysql_row[4],MySQL _ row[5]);
}
}
其他
{
printf(mysql_num_rows失败!\ n’);
退出(-1);
}
MySQL _ free _ result(MySQL _ ret);
退出(0);
}
其他
{
printf(存储结果失败!\ n’);
退出(-1);
}
}
其他
{
printf(查询失败!\ n’);
退出(-1);
}
}
其他
{
printf(连接失败\ n’);
退出(-1);
}
}
如果你包含了正确的头文件而在连接的时候,告诉你没有符号连接
你应该连接你需要的库
我的/lib/mysql/libmysqlclient.so下面
gcc-L/lib/MySQL-lmysql客户端测试。c进行编译
RedHat_shu@hotmail.com
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。