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