用C语言操作mysql数据库的一种通用方法

用C语言操作mysql数据库的一种通用方法
在我们的Web应用程序中,虽然PHP、JSP和其他脚本都提供了mysql接口,但显而易见的是,直接使用C语言具有更好的安全性和性能,这在本文中可以得到体现。

先看结构:

下面的代码块用于将数据库连接到通信过程。如果你想连接到MySQL,你必须建立一个MySQL实例,并初始化通过mysql_init。
st_mysql { typedef struct
NET网络通讯参数
影响connector_fd connectorfd SSL; / * * /
char * * *的主机,用户密码,* unix_socket,
* server_version,* host_info,*信息,*分贝;
unsigned int型的港口,client_flag,server_capabilities;
unsigned int protocol_version;
unsigned int field_count;
unsigned int server_status;
无符号长thread_id ID连接服务器; / * * /
my_ulonglong affected_rows;
my_ulonglong insert_id;如果插入表格 / * * / nextnr
my_ulonglong用MySQLShow extra_info; / * * /
无符号长packet_length;
枚举mysql_status状态;
mysql_field *场;
mem_root field_alloc;
my_bool free_me如果自由mysql_close; / * * /
my_bool重新设置为自动重新连接;如果1 / * * /
结构st_mysql_options选项
焦scramble_buff { 9 };
结构charset_info_st *字符集;
unsigned int server_language;
MySQL };
该结构表示返回一行(选择、显示、描述、解释)的结果。返回的数据称为数据集。使用数据库的朋友不应该对数据库查询后的结果集不熟悉。C API,相应的mysql_res是从数据库中读取数据,并从mysql_res读取数据。
st_mysql_res { typedef struct
my_ulonglong row_count;
unsigned int field_count,current_field;
mysql_field *场;
mysql_data *数据;
mysql_rows * data_cursor;
mem_root field_alloc;
mysql_row行如果缓冲读取; / * * /
mysql_row current_row缓冲区的当前行; / * * /
当前行的无符号长列长度;
用于缓冲/读取MySQL处理 /;
my_bool EOF用我的mysql_fetch_row; / * * /
mysql_res };
uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d

再看一遍这个函数

C语言运行mysql数据的常用功能
所需要的头文件:#包括
函数:获取或初始化MySQL结构
函数原型:mysql * mysql_init(mysql * MySQL)
函数返回值:初始化mysql *句柄
注意:在内存不足的情况下,返回null

所需要的头文件:#包括
函数功能:关闭服务器连接并释放与连接相关联的内存。
函数原型:无效mysql_close(mysql * MySQL);
函数传入值:指向MySQL的指针:类型
函数返回值:否

所需要的头文件:#包括
函数功能:连接mysql服务器
函数原型:mysql * mysql_connect(mysql * MySQL,const char *的主机,const char *用户,const char);
函数传入值:MySQL表示现有MySQL结构的地址
主机表示MySQL服务器的主机名或IP。
用户表示登录用户名
密码是登录密码
函数返回值:如果连接成功,则是一个mysql *连接句柄:如果连接失败,则为null。
注意:这个函数是不推荐的,使用mysql_real_connect()代替

要求的文件包括:#
函数功能:mysql * mysql_real_connect(mysql * MySQL,const char *的主机,const char * const char,用户,char)。
函数传入值:MySQL表示现有MySQL结构的地址。
主机表示MySQL服务器的主机名或IP。
用户表示登录的用户名。
密码是登录密码
DB表示要连接的数据库。
端口表示mysql服务器的TCP/IP端口。
unix_socket代表连接类型
client_flag表明MySQL的ODBC数据库运行的标记
函数返回值:如果连接成功,则是一个mysql *连接句柄:如果连接失败,则为null。

所需要的头文件:#包括
函数函数:返回受最新更新、删除或插入查询影响的行数。
函数传入值:MySQL:类型指针
函数的返回值:大于0的整数表示受影响或被检索的行数。0表示没有匹配序列中的WHERE子句的记录或当前没有执行查询。- 1表示查询返回错误或SELECT查询。

所需要的头文件:#包括
函数函数:在指定的连接上执行查询
函数原型:int mysql_query(mysql * MySQL,const char *查询);
函数传入值:查询表示SQL语句的执行。
函数返回值:如果查询成功,则为零,错误为非零。
相关函数:mysql_real_query

所需要的头文件:#包括
函数函数:获取非缓冲结果集的结果标识符。
功能:* mysql_use_result原始mysql_res(mysql * MySQL);
函数传入值:指向MySQL的指针:类型
函数返回值:一个mysql_res结果结构,如果出现错误,null

# incluee
检索结果集的下一行
mysql_row mysql_fetch_row(mysql_res *结果);
该mysql_res指针:结构
一个为线下mysql_row结构。如果没有更多的行可以检索或如果有一个错误,null

#包括
返回指定结果集列的数目。
unsigned int mysql_num_fields(mysql_res * RES);
该mysql_res结构的指针
结果集中字段数的无符号整数。

#包括
创建一个数据库
国际mysql_create_db(mysql * MySQL,const char *分贝);
类型指针
db:要创建的数据库名称
如果数据库成功创建,如果发生错误,返回0,非0。

#包括
选择一个数据库
国际mysql_select_db(mysql * MySQL,const char *分贝);
类型指针
db:要创建的数据库名称
如果数据库成功创建,如果发生错误,返回0,非0。

uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d

uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d uff0d

再看一遍例子。

许多人使用MySQL开发多个项目,有时为了业绩,我们将用C语言模块的发展直接相关,尤其是在我们的Web应用程序,而PHP、JSP脚本MySQL提供了接口,安全和性能却明显的C语言直接使用更好,米迦勒更多的项目PHP开发对这种语言的使用界面,然后编译成PHP,直接使用PHP脚本,这个话题就不多说了,这里主要讲如何利用C语言在linux连接mysql数据库,读取里面的数据的同时,如何返回。编译。

这里的大多数代码是指在MySQL分布。C源文件,你也可以去看看里面的代码,这个代码可以连接本地MySQL服务器的9tmd_bbs_utf8数据库,从表tbb_user数据根据用户ID输入来获得用户的姓名和打印输出终端。

U3000 U3000
#如果定义(_win32)定义(_win64)| | / /为了支持Windows平台下编译
#包括
# endif
#包括
#包括
#包括MySQL。H / /我的机器的文件在/ usr /局部/包括/ MySQL

定义数据库操作宏,不能将定义直接留在代码中。
#定义select_query 选择用户名tbb_user其中UserID = %d

int main(int argc、argv char *) / / char *参数相当于char argv { }
{
mysql,**;定义数据库连接的句柄,几乎所有的MySQL函数都使用它。
mysql_res * RES; / /查询结果集,结构类型
mysql_field * FD; / /结构包含的字段信息
mysql_row排; / /字符串数组存储查询结果
焦qbuf { 160 }; / /存储查询的SQL语句的字符串

如果(argc!= 2){检查输入参数
Fprintf(stderr,的用法:mysql_select ;
出口(1);
}

mysql_init(MySQL);
如果(!(!)(袜子= mysql_real_connect(MySQL,localhost
Fprintf(stderr,无法连接发动机!%s
perror();
出口(1);
}

sprintf(qbuf,select_query,atoi(argv { 1 }));
如果(mysql_query(袜子,qbuf)){
Fprintf(stderr,查询失败(%s)
出口(1);
}

如果(!(RE = mysql_store_result(袜子))){
Fprintf(stderr,无法从%s获得结果
出口(1);
}

printf(返回的字段个数:%d

而(行= mysql_fetch_row(RES)){
printf(其他用户的用户名是:# %d %s
放置()查询ok!;
}

mysql_free_result(RES);
mysql_close(袜子);
出口(0);
返回0。为了与大多数编译器兼容,可以参加这次旅行。
}

编译时,使用以下命令

gcc -o mysql_select。 / mysql_select。C我/ usr / / /当地包括MySQL L / usr / / /本地库MySQL lmysqlclient(- LZ)(lm),这两个选项是可选的,根据你的环境。
运行时,执行以下命令

mysql_select / 1。
将返回以下结果:

返回的字段数:1

有# 1用户的用户名是:米迦勒

查询好!
以上是本文的全部内容,希望能对大家有所帮助。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部