mysql实例连接_mysql 连接实例及函数简介

/*使用Mysql(Version: 5.0.77)的一个简单的例子*/

#include

#include "/usr/include/mysql/mysql.h"

int main() {

MYSQL *conn;

MYSQL_RES *res;

MYSQL_ROW row;

char *server = "localhost";

char *user = "HustBak";

char *password = "hustpass"; /* 此处改成你的密码 */

char *database = "DBHustBak";

conn = mysql_init(NULL);

/* Connect to database */

if (mysql_real_connect(conn, server,user, password, database, 0, NULL, 0)){

printf("success connect\n");

}

/* send SQL query */

if (mysql_query(conn, "select * from User")) {

fprintf(stderr, "%s\n", mysql_error(conn));

return 1;

}

res=mysql_use_result(conn);

printf("MySQL Tables in mysql databases:\n");

while((row=mysql_fetch_row(res))!=NULL)

printf("%s\n",row[0]);

return 1;

}

在数据库中进行连接和查询等操作的一个模板函数例子,

文件保存为test1.c文件形式,编译时用的命令为

gcc -o test1 $(mysql_config --cflags) test1.c $(mysql_config --libs)

其中mysql_config是数据库环境设置,可以通过查看mysql_config --cflags和mysql_config --libs来查看配置

C语言访问Mysql基本函数

在C连接mysql服务器,需要使用libmysqlclient开发包。在ubuntu系统上可以通过

命令sudo apt-get install libsqlclient-dev 安装。

和其它和数据库访问类似,具体的过程有

1,连接数据库

2,访问数据

3,处理数据

4,断开连接

下面,接上面的顺序来了解mysql数据库编程所要用到的具体函数

一,连接数据库

1,初始化一个连接句柄

MYSQL *mysql_init(MYSQL *);

//参数如果为NULL,则分配一个新的连接句柄

2,int mysql_option(MYSQL *connection, enum option_to_set, const char *

argument);

//这个函数用来设置连接特性的,也可以不设,一切会默认。而且,每次只能设

置一个选项,想设置多个选项,则需要多次调用。以下是三个主要的选项,其它见手册。

枚举选项实际参数类型含义

MYSQL_OPT_CONNECT_TIMEOUT常数,无符号的整数类型中止连接前等待的秒数

MYSQL_OPT_COMPRESS无,使用NULL在网络连接中使用压缩

MYSQL_INIT_COMMAND常数,char*连接建立以后发送的命令

3,设置及连接数据库

MYSQL *mysql_real_connect(MYSQL *connection, //连接句柄const char *server_host, //数据库所在主机名

const char *sql_username; //访问数据库的数据名

const char *sql_password; //密码

const char *db_name; //数据库名

unsigned int port_number, //端口号,为0则使用默认(一般选择)

const char *unix_socket_name, //一般为NULL

unsigned int flags); //见说明

//它们的含意参数的名称已经很明白了,而最后一个参数flags只有两个参数

可供选择

CLIENT_ODBC---如果你确知ODBC正用于远程数据库,则需要用到它。

CLIENT_FOUND_ROW--

二,执行SQL语句mysql_query

int mysql_query(MYSQL *connection, const char *query);利用connection对query的SQL语句执行成功,则返回0.三,获取数据

1,检验受影响的行数量

my_ulonglong mysql_affected_rows(MYSQL *connection);

2,检索数据

一般,我们用mysql_query发出查询,利用mysql_store_result或

mysql_use_result执行检索。再可以用mysql_fetch_row来处理数据,最后用

mysql_free_result进行整理工作。

MYSQL_RES *mysql_store_result(MYSQL *connection);

//如果执行失败则返回NULL实际返回的行数:

my_ulonglong mysql_num_rows(MYSQL_RES *result);获得从store result中得到的结构体,并从中检索单个行,返回给你的行结构体

中的数据。当没有更多的数据,或者出错时,将返回NULL值。

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);在結果集合中跳跃,设置由下面的fetch row选项返回的行。区距值是一个行的

号码,这个值大于零而小于結果集合中的行数量。传递零值将会在下一次调用到

mysql_fetch_row中时返回第一行。

void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset);得到一个区距值(off value),表明在结果集合中当前的位置。它不是行数,所

以不能用mysql_data_seek来使用它。

MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result);在結果集合中移动当前位置,并将当前的位置返回MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET

offset);当使用完一个结果集合后,要使MYSQL库整理分配的对象。

void mysql_free_result(MYSQL_RES *result);逐行检索数据

MYSQL_RES * mysql_use_result(MYSQL *connection);

//它嚅然也是返回一个结果集合对象,但在返回时它实际上并没有将任何检

索到的数据返回到结果集合中,而仅仅是将结果集合初始化来接收数据。

注::为了检索数据,你必須和以前一样反复调用mysql_fetch_row,直到检

索完所有的数据,如果你在一次use result调用中没有得到所有的数据,那么后面的数据检索就损坏了。

处理返回的数据

得到结果集合中字段的数目。

unsigned int mysql_field_count(MYSQL *connection);得到关于字段和字段内数据的具体信息

MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result);

MYSQL_FIELD结构体的字段含意

char *name列的名称,字符串表示char *table列所在的表名称

char *def如果调用mysql_list_field,则包含列的默认值

enum enum_field_types type列的类型

unsigned int length列的宽度,在定义表格时指定

unsigned int max_length如果你使用mysql_store_result,则它包含找到的最

长的实际列长度,使用mysql_use_result,则不会对它进行设置

unsigned int flag告诉你关于列的信息,通常标识有:NOT_NULL_FLAG,

PRI_KEY_FLAG,UNSIGNED_FLAG,AUTO_INCREMENT_FLAG,BINARY_FLAG.

unsigned int decimals十进制数,只对数据字段有效。

列的几个常用类型:

FIELD_TYPE_DECIMAL

FIELD_TYPE_LONG

FIELD_TYPE_STRING

FIEDL_TYPE_VAR_STRING宏IS_NUM,如果字段类型是数字形式的,则返回真

三,断开连接及其它

void mysql_close(MYSQL *connection);处理错误

unsigned int mysql_errno(MYSQL *connection);

char *mysql_error(MYSQL *connection);

Mysql_get_client_info char *mysql_get_client_info(void);返回客户正在使用的库版本信息

Mysql_get_host_info char *mysql_get_host_info(MYSQL *connection);返回服务器连接信息

Mysql_get_server_info char *mysql_get_server_info(MYSQL *connection);返回当前连接的服务器信息

Mysql_info char* mysql_info(MYSQL *connection)返回最近查询的信息,但只对几个查询类型有效,通常是INSERT和UPDATE语

句,否则返回NULL

Mysql_select_db int mysql_select_db(MYSQL *connection, const char

*dbname);假如用户有合适的权限,可以从默认的数据库转到由参数設定的数据库。成

功则返回0 Mysql_shutdown int mysql_shutdown (MYSQL *connection);如果有合适的权限,可以用此来关闭所有连接的数据库服务器。成功则返回 零。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值