参考:
http://www.erickcantwell.com/2011/08/mysql-prepared-statements-in-c/
[root@li408-34 mysql]# cat a.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <mysql/mysql.h>
#define STRING_SIZE 256
int main()
{
MYSQL *mysql;
MYSQL_STMT *stmt;
MYSQL_BIND param[1], result[1];
char *sql;
mysql = mysql_init(NULL);
/* Here we make the connection to MySQL */
if (mysql_real_connect(mysql, "localhost", "root", "haoning", "test", 0, NULL, 0) == NULL) {
fprintf(stderr, "No connection could be made to the database\n");
exit(EXIT_FAILURE);
}
sql = "SELECT `name` FROM `mytest` WHERE `name` = ?";
int param_count;
short small_data;
int int_data;
char str_data[STRING_SIZE];
char result_data[STRING_SIZE];
unsigned long str_length;
unsigned long data_length;
my_bool is_null;
/* Initialize our statement */
stmt = mysql_stmt_init(mysql);
if (!stmt) {
fprintf(stderr, " mysql_stmt_init(), out of memory\n");
exit(EXIT_FAILURE);
}
if (mysql_stmt_prepare(stmt, sql, strlen(sql))) {
fprintf(stderr, " mysql_stmt_prepare(), INSERT failed\n");
fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
exit(EXIT_FAILURE);
}
/* Zero out both the param and result data structures */
memset(param, 0, sizeof(param));
memset(result, 0, sizeof(result));
/* STRING PARAM */
param[0].buffer_type = MYSQL_TYPE_STRING;
param[0].buffer = (char *)str_data;
param[0].buffer_length = STRING_SIZE;
param[0].is_null = 0;
param[0].length = &str_length;
result[0].buffer_type= MYSQL_TYPE_VAR_STRING;
result[0].buffer = result_data;
result[0].buffer_length = STRING_SIZE;
result[0].is_null = 0;
result[0].length = &data_length;
/* Bind the parameters buffer */
if (mysql_stmt_bind_param(stmt, param)) {
fprintf(stderr, " mysql_stmt_bind_param() failed\n");
fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
exit(EXIT_FAILURE);
}
/* Bind the results buffer */
if (mysql_stmt_bind_result(stmt, result) != 0) {
fprintf(stderr, " mysql_stmt_bind_result() failed\n");
fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
exit(EXIT_FAILURE);
}
/* Specify the parameter that we send to the query */
strncpy(str_data, "haha1", STRING_SIZE);
str_length= strlen(str_data);
/* Execute the statement */
if (mysql_stmt_execute(stmt)) {
fprintf(stderr, " mysql_stmt_execute(), failed\n");
fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
exit(EXIT_FAILURE);
}
/* Print our results */
if(mysql_stmt_fetch (stmt) == 0) {
printf("%s\n", result_data);
} else {
printf("No results found!\n");
}
/* Close the statement */
if (mysql_stmt_close(stmt)) {
fprintf(stderr, " failed while closing the statement\n");
fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
[root@li408-34 mysql]# cat make.sh
#!/bin/sh
#gcc -Wall -L /usr/lib/mysql/ -l mysqlclient mysql_query.c -o mysql_query.o -g
gcc -Wall -L /usr/lib/mysql/ -l mysqlclient a.c -o mysql_query.o -g
分享到:
相关推荐
【C语言调用MySQL快速教程】是针对C程序员的一个实用指南,旨在教授如何高效地在C程序中连接、操作MySQL数据库。本教程分为几个关键部分,包括建立数据库连接、数据插入、更新和删除,以及查询结果的处理。 首先,...
### C语言调用MySQL快速教程知识点精析 #### 核心知识点一:C语言与MySQL交互基础 在《C语言调用mysql快速教程(精华篇)》中,文章首先介绍了如何在MySQL中创建数据库、表,并添加数据。这一步骤为后续C语言与MySQL...
下面将详细讲解如何用C来调用MySQL数据库的存储过程。 首先,你需要安装MySQL的C接口库——libmysqlclient,这是MySQL提供的一种API,允许C程序直接与MySQL服务器通信。在Linux环境下,可以使用包管理器(如apt-get...
总的来说,移动智能终端开发中,C语言调用MySQL接口是实现本地与服务器数据交换的一种方式。通过理解并掌握上述步骤,开发者可以在C程序中灵活地执行SQL命令,实现数据的读写和管理,为移动应用提供数据存储功能。
在本例中,我们关注的是如何使用C API来调用MySQL数据库中的存储过程,以实现对数据的增、删、改、查(CRUD)操作。MySQL是一个广泛使用的开源关系型数据库管理系统,它提供了丰富的API供开发者使用。 首先,要使用...
本文介绍了如何使用C语言调用MySQL API来实现基本的数据查询操作。通过以上步骤,你可以学习到如何连接MySQL数据库、执行SQL查询以及处理查询结果。此外,还展示了如何设置字符集、处理错误以及释放资源。这对于初学...
#### 一、C语言调用MySQL数据库 在本示例中,我们通过一个简短的C语言程序实现了对MySQL数据库的连接及查询操作。该程序展示了如何使用MySQL C API(应用程序接口)来实现这一功能。 #### 二、必要的头文件包含 1...
### 使用C语言在Windows环境下连接MySQL数据库 #### 知识点概述 本文旨在详细介绍如何在Windows环境下使用C语言实现与MySQL数据库的连接。这涉及到编译环境的搭建、必要的库文件配置以及具体的代码实现等几个关键...
这个简单的例子展示了如何使用C语言调用MySQL存储过程执行加法操作。实际上,存储过程可以执行更复杂的任务,如事务处理、多表操作和自定义业务逻辑。在实际项目中,理解如何使用C与MySQL交互对于开发高效、安全的...
操作数据库完毕后,为了释放系统资源,应当调用mysql_close函数关闭数据库连接。这一操作有助于保持系统的稳定性和效率。 在实际操作过程中,错误处理是不可忽视的环节。比如,在连接数据库失败时,需要进行适当的...
MySQL-CAPI文档主要介绍了如何使用C语言来与MySQL数据库进行交互,这是一项基础且重要的技能,特别是对于那些需要在C程序中嵌入数据库操作的开发者来说。MySQL的C API(应用程序编程接口)提供了一系列的函数,允许...
(文件中main函数中两个printf函数的输出为测试结果,调用连接函数前为NULL,调用连接函数后为一个地址,mysqlConnect函数中第一个参数为数据库所在ip,第二个和第三个参数是c编译所在环境的用户名和密码,第四个参数...
C API调用MySQL,英文PDF文档 This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property ...
在这段代码中,`main()`函数初始化了MySQL连接,然后调用`create()`、`insert()`和`output()`函数。`create()`函数用于创建一个名为`tl`的表,包含三个字段:ID(整型)、name(字符型,长度5)和birthday(日期)。...
首先,要使用C语言访问MySQL,你需要了解MySQL的C API,这是MySQL提供的一组函数,允许程序员在C程序中执行SQL语句、管理连接、处理结果集等。主要的头文件是`mysql.h`,包含所有必要的声明。你需要在你的项目中包含...
本文将详细探讨如何在VS或VC++环境中使用C++调用MySQL数据库。 首先,我们需要了解C++与MySQL交互的基础。MySQL提供了一个名为`libmysqlclient`的库,它包含了C接口,允许C++代码直接与MySQL服务器通信。在VS或VC++...
在调用mysql_real_connect之前,必须先初始化一个MYSQL对象。mysql_real_connect的参数包括:MYSQL对象指针、服务器地址、用户名、密码、要操作的数据库名、端口号、UNIX socket路径以及连接标志位。在文档提供的...
在IT领域,C语言是一种基础且强大的编程语言,而MySQL是一种广泛应用的关系型数据库管理系统。将两者结合,可以创建高效的数据处理应用。本压缩包提供的" C语言操作mysql'类 "是为了简化C语言与MySQL数据库之间的...
而`mysql.h`是MySQL C API的头文件,包含了与MySQL数据库交互所需的所有函数和结构体。 在`userfunction`函数中,用户被欢迎登录并可以选择不同的操作,例如借阅、归还图书或者查询图书。这些功能的实现依赖于MySQL...
本文将深入探讨如何在Windows上实现C/C++调用MySQL的详细步骤,以及涉及的关键知识点。 首先,我们需要安装必要的库和开发工具。MySQL提供了一个名为`MySQL Connector/C`的库,它允许C和C++程序通过API与MySQL...