全部博文(68)
分类: LINUX
2015-08-14 10:05:48
1
|
MYSQL * mysql_init(MYSQL *);
|
1
2
3
4
5
6
7
8
|
MYSQL* mysql_real_connect(MYSQL* connection ,
const char *server_host,
const char *sql_user_name,
const char *sql_password,
const char *db_name,
unsigned int port_number,
const char *unix_socket_name,
unsigned int flags);
|
指针connection必须指向已经被mysql_init初始化过的结构。
注意server_host既可以是主机名,也可以是IP地址。如果连接本地,可以制定localhost来优化。
sql_user_name和sql_password的含义和它们的字面意思一样。如果登录名为NULL,则假设登录名为当前Linux用户的登录ID,如果密码为NULL,则假设密码为空。
port_number和unix_socket_name应该分别为0和NULL,除非你改变了MySQL安装的默认设置。他们将默认使用合适的值。
最后,flags参数用来对一些定义的位模式进行OR操作,使得改变使用协议的某些特性。
如果无法连接,则返回NULL。mysql_error函数可以提供有帮助的信息。
3. 使用完连接,通常在程序退出前,要调用函数mysql_close;
mysql_close的函数定义:
1
|
void mysql_close(MYSQL * connection );
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
int main ( int argc, char *argv[]) {
MYSQL *conn;
// 步骤1: 初始化连接句柄
conn = mysql_init( NULL );
if (conn == NULL ) { // 如果返回 NULl 说明初始化失败
printf( "mysql_init failed!\n" );
return EXIT_FAILURE;
}
// 步骤2:实际进行连接
// 参数分别为,conn连接句柄,host是MySQL所在主机或地址, user 用户名, password 密码,database_name数据库名,后面的都是默认
conn = mysql_real_connect(conn, "host" , "user" , "password" , "database_name" , 0, NULL , 0);
if (conn) { // 连接成功
printf( "Connection success!\n" );
} else {
printf( "Connection failed!\n" );
}
// 步骤3: 退出前关闭连接
mysql_close(conn);
return 0;
}
|
1
|
gcc -I/usr/include/mysql test.c -L/usr/lib/mysql -lmysqlclient -o app
|
错误处理的两个函数:
1
2
3
4
|
// 返回错误码
unsigned int mysql_errno(MYSQL * connection );
// 返回错误详细信息
char * mysql_error(MYSQL * connection );
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
#include "errmsg.h"
#include "mysqld_error.h"
void Error(MYSQL* conn) {
printf( "Connection error %d: %s\n" , mysql_errno(conn), mysql_error(conn));
}
int main ( int argc, char *argv[]) {
MYSQL conn; // 是变量而不是指针
mysql_init(&conn); // 注意取地址符&
if (mysql_real_connect(&conn, "192.168.137.246" , "root" , "123456" , "test" , 0, NULL , 0)) {
printf( "Connection success!\n" );
mysql_close(&conn);
} else {
fprintf(stderr, "Connection failed!\n" );
if (mysql_errno(&conn)) {
fprintf(stderr, "Connection error %d: %s\n" , mysql_errno(&conn), mysql_error(&conn));
}
}
return EXIT_SUCCESS;
}
|