C语言连接MySQL数据库

Mayuyu学过MySQL数据库,我们都知道MySQL数据库是一种关系型数据库,库中有表,表中有记录,记录中有字段。

 

现在Mayuyu将来带领大家学习如何用C语言连接数据库,并领略常见操作的细节问题。

 

首先,我们先建库,然后建表,再插入记录。

 

(1)建库

 

    这个其实很简单啦,直接使用命令 :create database test; 这样就建立了一个名称为test的数据库。

 

(2)建表

  

    我们先进入test数据库,创建一个表,即如下语句。

create table user(
    id     int(6),
    name   varchar(15),
    tel    int(11)
);


    这里Mayuyu只建立一个简单的表,测试用。

 

(3)表建立完成后,我们开始插入记录

insert into user (id,name,tel) values (1,"Mayuyu",88888888);
insert into user (id,name,tel) values (2,"Mayuyu",88888888);
insert into user (id,name,tel) values (3,"Mayuyu",88888888);
insert into user (id,name,tel) values (4,"Mayuyu",88888888);
insert into user (id,name,tel) values (5,"Mayuyu",88888888);
insert into user (id,name,tel) values (6,"Mayuyu",88888888);


 

嗯,成功插入上面6条记录。

 

现在,我们可以编写C程序来进行数据库操作。代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <mysql.h>

char *host     = "localhost";
char *user     = "root";
char *password = "root";
char *db_name  = "test";

int main()
{
	MYSQL *conn = NULL;
	MYSQL_RES *res = NULL;
	MYSQL_ROW row = NULL;
    
	conn = mysql_init(NULL);
	if(mysql_real_connect(conn,host,user,password,db_name,0,NULL,0) == NULL)
	{
		fprintf(stderr,"%s\n",mysql_error(conn));
		exit(1);
	}

	char sql[] = "select * from user where name='Mayuyu';";
	if(mysql_query(conn,sql))
	{
		fprintf(stderr,"%s\n",mysql_error(conn));
		exit(1);
	}
	res = mysql_use_result(conn);
	while((row = mysql_fetch_row(res)) != NULL)
		printf("%s\t%s\t%s\n",row[0],row[1],row[2]);
	mysql_free_result(res);
	mysql_close(conn);
	return 0;
}


 

 嗯,上面的代码中体现了C语言操作数据库的常见操作。注意在编译时候要加上一定参数。如下:

 

gcc -I /usr/include/mysql/ -L /usr/lib/mysql/ -l  mysqlclient MySQL.c -o MySQL

 

执行结果如下:

 

 

现在Mayuyu来分析上面代码:

 

在连接数据库的时候,我们要知道数据库的地址,用户名,密码,数据库名称。从主函数开始:

 

(1)MYSQL *conn = NULL

    本语句是获得一个数据库连接。

 

(2)MYSQL_RES *res= NULL;

    指向结果集。

 

(3)MYSQL_ROW row = NULL;

    其实MYSQL_ROW是一个二维指针。

 

(4)mysql_init()

 

    函数原型:MYSQL *mysql_init(MYSQL *mysql);初始化mysql句柄。如果mysql为NULL,则分配一个。

 

(5)mysql_real_connect()

   

    函数原型:MYSQL *mysql_real_connect(

                         MYSQL *mysql,
                         const char *host,
                         const char *user, 
                         const char *passwd, 
                         const char *db, 
                         unsigned int port,
                         const char *unix_socket,
                         unsigned long client_flag

                        )


     上面描述了五个参数的主要取值,MYSQL *为mysql_init函数返回的指针,host为null或localhost时

     链接的是本地的计算机,unix_socket为null时,表明不使用socket或管道机制,最后一个参数经常设置

     为0。


     当连接成功时,返回MYSQL连接句柄,失败,返回NULL。当成功时,返回值与第一个参数值是相同的。

 

(6)mysql_query()

   

     执行sql语句。

 

(7)mysql_fetch_row()

     mysql_fetch_row()从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储

     存在一个数组的单元中,偏移量从0开始。依次调用 mysql_fetch_row() 将返回结果集中的下一行,如

     果没有更多行则返回FALSE。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值