mysql execute stmt_mysql_stmt_execute()--MySql数据库
int mysql_stmt_execute(MYSQL_STMT *stmt)
描述
mysql_stmt_execute()执行与语句句柄相关的预处理查询。在该调用期间,将当前绑定的参数标记符的值发送到服务器,服务器用新提供的数据替换标记符。
如果语句是UPDATE、DELETE或INSERT,通过调用mysql_stmt_affected_rows(),可发现更改、删除或插入的总行数。如果这是诸如SELECT等能生成结果集的语句,调用任何其他能导致查询处理的函数之前,必须调用mysql_stmt_fetch()来获取数据。关于如何获取结果的更多信息,请参见25.2.7.11节,“mysql_stmt_fetch()”。
对于生成结果集的语句,执行语句之前,可通过调用mysql_stmt_attr_set(),请求mysql_stmt_execute()为语句打开光标。如果多次执行某一语句,在打开新的光标前,mysql_stmt_execute()将关闭任何已打开的光标。
返回值
如果执行成功,返回0。如果出现错误,返回非0值。
错误
?
CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。
?
CR_OUT_OF_MEMORY
内存溢出。
?
CR_SERVER_GONE_ERROR
MySQL服务器不可用。
?
CR_SERVER_LOST
在查询过程中,与服务器的连接丢失。
?
CR_UNKNOWN_ERROR
出现未知错误。
示例:
在下面的示例中,介绍了使用mysql_stmt_init()、mysql_stmt_prepare()、mysql_stmt_param_count()、mysql_stmt_bind_param()、mysql_stmt_execute()、以及mysql_stmt_affected_rows()创建和填充表的方法。假定mysql变量具有有效的连接句柄。
#define STRING_SIZE 50
#define DROP_SAMPLE_TABLE "DROP TABLE IF EXISTS test_table"
#define CREATE_SAMPLE_TABLE "CREATE TABLE test_table(col1 INT,\\
col2 VARCHAR(40),\\
col3 SMALLINT,\\
col4 TIMESTAMP)"
#define INSERT_SAMPLE "INSERT INTO test_table(col1,col2,col3) VALUES(?,?,?)"
MYSQL_STMT *stmt;
MYSQL_BIND bind[3];
my_ulonglong affected_rows;
int param_count;
short small_data;
int int_data;
char str_data[STRING_SIZE];
unsigned long str_length;
my_bool is_null;
if (mysql_query(mysql, DROP_SAMPLE_TABLE))
{
fprintf(stderr, " DROP TABLE failed\\n");
fprintf(stderr, " %s\\n", mysql_error(mysql));
exit(0);
}
if (mysql_query(mysql, CREATE_SAMPLE_TABLE))
{
fprintf(stderr, " CREATE TABLE failed\\n");
fprintf(stderr, " %s\\n", mysql_error(mysql));
exit(0);
}
stmt = mysql_stmt_init(mysql);
if (!stmt)
{
fprintf(stderr, " mysql_stmt_init(), out of memory\\n");
exit(0);
}
if (mysql_stmt_prepare(stmt, INSERT_SAMPLE, strlen(INSERT_SAMPLE)))
{
fprintf(stderr, " mysql_stmt_prepare(), INSERT failed\\n");
fprintf(stderr, " %s\\n", mysql_stmt_error(stmt));
exit(0);
}
fprintf(stdout, " prepare, INSERT successful\\n");
param_count= mysql_stmt_param_count(stmt);
fprintf(stdout, " total parameters in INSERT: %d\\n", param_count);
if (param_count != 3)
{
fprintf(stderr, " invalid parameter count returned by MySQL\\n");
exit(0);
}
memset(bind, 0, sizeof(bind));
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&int_data;
bind[0].is_null= 0;
bind[0].length= 0;
bind[1].buffer_type= MYSQL_TYPE_STRING;
bind[1].buffer= (char *)str_data;
bind[1].buffer_length= STRING_SIZE;
bind[1].is_null= 0;
bind[1].length= &str_length;
bind[2].buffer_type= MYSQL_TYPE_SHORT;
bind[2].buffer= (char *)&small_data;
bind[2].is_null= &is_null;
bind[2].length= 0;
if (mysql_stmt_bind_param(stmt, bind))
{
fprintf(stderr, " mysql_stmt_bind_param() failed\\n");
fprintf(stderr, " %s\\n", mysql_stmt_error(stmt));
exit(0);
}
int_data= 10;
strncpy(str_data, "MySQL", STRING_SIZE);
str_length= strlen(str_data);
is_null= 1;
if (mysql_stmt_execute(stmt))
{
fprintf(stderr, " mysql_stmt_execute(), 1 failed\\n");
fprintf(stderr, " %s\\n", mysql_stmt_error(stmt));
exit(0);
}
affected_rows= mysql_stmt_affected_rows(stmt);
fprintf(stdout, " total affected rows(insert 1): %lu\\n",
(unsigned long) affected_rows);
if (affected_rows != 1)
{
fprintf(stderr, " invalid affected rows by MySQL\\n");
exit(0);
}
int_data= 1000;
strncpy(str_data, "The most popular Open Source database", STRING_SIZE);
str_length= strlen(str_data);
small_data= 1000;
is_null= 0;
if (mysql_stmt_execute(stmt))
{
fprintf(stderr, " mysql_stmt_execute, 2 failed\\n");
fprintf(stderr, " %s\\n", mysql_stmt_error(stmt));
exit(0);
}
affected_rows= mysql_stmt_affected_rows(stmt);
fprintf(stdout, " total affected rows(insert 2): %lu\\n",
(unsigned long) affected_rows);
if (affected_rows != 1)
{
fprintf(stderr, " invalid affected rows by MySQL\\n");
exit(0);
}
if (mysql_stmt_close(stmt))
{
fprintf(stderr, " failed while closing the statement\\n");
fprintf(stderr, " %s\\n", mysql_stmt_error(stmt));
exit(0);
}
mysql execute stmt_mysql_stmt_execute()--MySql数据库相关推荐
- mysql 9.0创建数据库_PHP与MySQL学习笔记9:创建Web数据库
1.在服务器上部署MySQL服务基本步骤合注意点 1)安装MySQL(命令安装.安装包安装等) 2)考虑是否需要一个独立的操作系统用户权限来运行MySQL程序. 3)路径的设置 4)root密码 (附 ...
- mysql connector python linux_Python使用mysql.connector链接mysql数据库
之前一直使用pythond mysqldb链接数据库,随着mysql被oracle收购之后,我发现mysqldb就不怎么更新了. 现在开始使用oracle提供的mysql.connector来操作my ...
- mysql 默认密码_mysql数据库安装
1.下载mysql数据库.我下载的是MySQL8.记住下载存放安装包的路径.双击开始安装. 2.按照下图勾选同意,然后点击下一步.此处没有截图,在网上找的. 3.左边蓝色区域可以看到安装到那一步了,安 ...
- mysql权限表_MySQL 数据库赋予用户权限操作表
MySQL清空数据库的操作:truncate table tablename; MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据 ...
- mysql讀取sql_MySQL数据库之python json及mysql读取json文件存sql等问题
本文主要向大家介绍了MySQL数据库之python json及mysql读取json文件存sql等问题 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. preface: 近期帮师 ...
- mysql gtid坑_数据库mysqldump的坑
今天的坑主要来自于 执行mysqldump命令时,参数的设置.主要涉及的参数为sql_log_bin 基于mysql5.7进行分析 一.bin_log bin_log就是数据库的日志文件,记录了数据库 ...
- MySQL数据库教程天花板,mysql安装到mysql高级,强|硬
MySQL数据库笔记 第一部分 MySQL基础篇 第01章 数据库概述 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业 ...
- MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版(自用不可外传)
文章目录 MySQL数据库笔记 第一部分 MySQL基础篇 第01章 数据库概述 1. 为什么要使用数据库 2. 数据库与数据库管理系统 2.1 数据库的相关概念 3. RDBMS与非RDBMS 3. ...
- MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版
MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版(自用不可外传) 文章目录 MySQL数据库笔记 第一部分 MySQL基础篇 第01章 数据库概述 1. 为什么要使用数据库 ...
- MySql基础篇---001 数据库概述与MySQL安装篇:概述,表和类对应关系,表关系、数据库卸载,下载,安装,配置,启动,登录,演示,图形化工具,目录结构,常见问题
第01章_数据库概述 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储 ...
最新文章
- C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面...
- Servlet跳转到jsp页面的几种方法
- 三个范式的定义与理解
- 微分方程在matlab中的实现,Matlab微分方程参数优化的Forcal实现
- hive整合ldap权限管理
- linux ssh非交互脚本,Linux expect非交互式执行脚本
- Android VideoView播放视频遇到的问题
- linux搭建压力测试,安装GTKStressTesting:对Linux系统进行压力测试变得更加容易
- CISCO路由器、交换机密码恢复
- IME输入法编程心得
- php文件的锁定机制
- php mysql join查询结果_PHP mySQL表JOIN查询 - 最有效的方法?
- JS数据结构与算法-队列结构
- 乱码文件删除不了的解决方法(需要everyone权限)
- Cannot create an instance of class AndroidViewModel (androidx ViewModelProvider AndroidViewModel)
- Dcoker安装mysql
- 成功解决:curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to bit.ly:443
- python datetime 时间加一秒,一分钟
- 常用数据库jdbc连接池的配置(在spring中的配置)
- 解决cerebro jdk9+启动不成功问题