Linux使用C语言连接MYSQL

这篇博客详细介绍了如何使用C语言在Linux环境中连接和操作MYSQL数据库,包括初始化连接、错误处理、执行SQL语句、获取自动增长ID、提取和处理数据等关键步骤。还提到了一些实用的MYSQL库函数,如mysql_init、mysql_query、mysql_store_result和mysql_fetch_row等。
摘要由CSDN通过智能技术生成

1、连接例程:
首先,使用mysql_init来初始化连接剧柄:
#include

初始化之后,你必须使用mysql_real_connect来向一个连接提供参数:
    MYSQL *mysql_real_connect(MYSQL *connection,//指向已经被mysql_init初始化过的结构
                const char *server_host,//可以是主机名,也可以是IP地址(本地可以是localhost)
                const char *sql_user_name,//使用者
                const char *sql_password,//使用者密码(密码会再被传输的过程中加密)
                const char *db_name,//数据库名字
                unsigned int port_number,//NULL,这两个为默认值就行
                const char *unix_socket_name,//0
                unsigned int flags);//这是改变协议的特性,位模式进行OR操作
    如果无法连接,它将返回NULL。mysql_error函数可以提供又帮助的信息。
使用完连接之后,通常在程序退出时,使用mysql_close:
void mysql_close(MYSQL *connection);
这将关闭连接。如果连接时由mysql_init建立的,mysql结构会被释放。指针将会失效并无法再次使用。逗留一个不需
要的连接是对资源的浪费,但是重新打开连接也会带来额外的开销,所以你必须自己权衡何时使用这些选项。

mysql_options例程(仅能在mysql_init和mysql_read_connect之间调用)可以设置一些选项:
int mysql_options(MYSQL *connection,enum option_to_set,const char *argument);

因为mysql_options一次只能设置一个选项,所以每设置一个选项就得调用它一次。你可以根据需要多次使用它,只
要它出现在mysql_init和mysql_real_connect之间即可。并不是所有的选项都是char类型,因此它们必须被转换
成const char *.  

enum选项          实际参数类型          说明
MYSQL_OPT_CONNECT_TIMEOUT   const unsigned int *        连接超时之前的等待秒数
MYSQL_OPT_COMPRESS      None,使用NULL         网络连接中使用压缩机制
MYSQL_INIT_COMMAND      const char *            每次连接建立后发送的命令
一次成功的调用将返回0。因为它仅仅是用来设置标志,所以失败总是意味这使用了一个无效的选项。

例子:
如果要设置连接超时时间为7秒,我们使用的代码片段如下所示:
unsigned int timeout=7;
    ...
    connection=mysql_init(NULL);
    ret=mysql_options(connection,MYSQL_OPT_CONNECT_TIMEOUT,(const char *)&timeout);

    if(ret){
        /*Handle error*/
    }
    connection=mysql_real_connect(connection ...);
下面我们使用一个简洁的程序来测试一下:
首先为用户设置一个新的密码(在下面的代码中,是本机上的rick的用户),然后创建要连接的数据库foo。
$ mysql -u root -p
    mysql> grant all on *.* to rick@localhost identified by '123456'

    mysql> \q
    $ mysql -u rick -p
    mysql> create database foo;
    mysql> \q 
使用sql文件进行批处理,这个文件为create_children.sql:
create table children (
    childno int(11) not null auto_increment primary key,
    fname varchar(30),
    age int(11)
    );

    insert into children(childno,fname,age) values(1,'Jenny',21);
    insert into children(childno,fname,age) values(2,'Andrew',17);
    insert into children(childno,fname,age) values(3,'Gavin',8);
    insert into children(childno,fname,age) values(4,'DUncan',5);
    insert into children(childno,fname,age) values(5,'Alex',4);
    insert into children(childno,fname,age) values(6,'Adrian',9);
重新登录:
$ mysql -u rick 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值