- 浏览: 267830 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (263)
- mysql (5)
- boost (6)
- 工具 (10)
- IT生活 (7)
- 多线程 (3)
- Ruby (15)
- php (2)
- MongoDB (39)
- 移动互联网 (2)
- 测试 (8)
- c++ (28)
- 书 (1)
- 网站 (3)
- 网络编程 (14)
- 开源软件 (1)
- 分布式计算 (1)
- 得得得 (1)
- php,wordpress (1)
- error (5)
- 编译 (2)
- 学习 (1)
- 杀毒软件 (1)
- dd (0)
- linux (21)
- 数据库 (1)
- STL (1)
- c++/c (5)
- 软件设计 (1)
- 操作系统 (4)
- 库 (2)
- win32 (1)
- s (0)
- openssl (1)
- perl (2)
- debug (1)
- windows (4)
- python (12)
- windows 防火墙 (1)
- vs (1)
- vim (2)
- vc (1)
- 浏览器插件的危害 (1)
- curl (0)
- 判断手机号码合法性的库 (0)
- 地址备注 (0)
- 安装 File::Slurp (1)
- cenos (2)
- shell (1)
- linunx (1)
- internet (1)
- software (1)
- widows (1)
- linux io (1)
- nginx (2)
- 算法 (2)
- google (1)
- protobuf (2)
- tengine (1)
- tools (1)
- lua (2)
- liunx (1)
- vcard (1)
- lua-iconv (1)
- 网络 (2)
- teat (0)
- ldconfig linux (0)
- awk (0)
- grep (0)
- windws (2)
- linux 命令 (1)
- tcp dump (1)
- vmware (1)
- question2answer (2)
- mongdb (1)
- 正则 (1)
- OCR (2)
- Windows Server (1)
最新评论
转:[url] http://blog.sina.com.cn/s/blog_62aab2760100h9ec.html
[/url]
mysql5.0以后就支持存储过程了,目前mysql的6.0Alpha版也已经推出。6.0不仅支持大型数据库如oracle等的绝大部分功能,如存储过程、视图、触发器、job等等,而且修正了这些功能所存在的bug,其中6.0.1还支持64位windows,以及表空间。
在c/c++中访问mysql,常见的只是一些简单的业务,使用c中嵌入简单的查询、插入、更新等操作即可。随着业务的复杂化,完成一个业务功能需要非常多的sql操作环节,把这些语句都嵌入c代码中会导致c代码越来越繁琐、不清晰,这时候,自然就想到了存储过程来封装所有的数据库逻辑,通过c简单调用mysql存储过程接口即可达到目的,极大地减轻了c程序员的工作量,也便于前端业务处理逻辑与数据库处理逻辑的分离。下面就介绍c语言调用存储过程的简单的方法。
1、首先创建一张表
用于存放用户信息
2、插入几条信息
3、查看用户信息
4、创建存储过程
如下:
5、c语言调用存储过程
调用方法或步骤:
5.1、初始化Mysql句柄
5.2、连接到mysql
5.3、调用存储过程
5.4、查询结果集并保存
5.5、获取查询结果
一般存储过程只会有一行的返回结果,^_^.
5.6、释放资源与mysql连接句柄
6、结束语
Mysql存储过程可以实现相当强大的功能,这里只是抛砖引玉的做一些实践,期望能够给大家一些帮助。也欢迎大家交流…
——转
[/url]
mysql5.0以后就支持存储过程了,目前mysql的6.0Alpha版也已经推出。6.0不仅支持大型数据库如oracle等的绝大部分功能,如存储过程、视图、触发器、job等等,而且修正了这些功能所存在的bug,其中6.0.1还支持64位windows,以及表空间。
在c/c++中访问mysql,常见的只是一些简单的业务,使用c中嵌入简单的查询、插入、更新等操作即可。随着业务的复杂化,完成一个业务功能需要非常多的sql操作环节,把这些语句都嵌入c代码中会导致c代码越来越繁琐、不清晰,这时候,自然就想到了存储过程来封装所有的数据库逻辑,通过c简单调用mysql存储过程接口即可达到目的,极大地减轻了c程序员的工作量,也便于前端业务处理逻辑与数据库处理逻辑的分离。下面就介绍c语言调用存储过程的简单的方法。
1、首先创建一张表
用于存放用户信息
Create table student( id int auto_increment, name varchar(20), age tinyint, remark varchar(50), primary key(id) );
2、插入几条信息
Insert into student values(1,"zhouys",90, ""); commit;
3、查看用户信息
mysql> select * from student; +------+-----------+------+----------+ | id | name | age | remark | +------+-----------+------+----------+ | 1 | zhouys | 90 | | +------+-----------+------+-----------+ 1 row in set (0.00 sec) mysql>
4、创建存储过程
如下:
delimiter // create procedure querystudent( in in_id int , #0-字符id 1-数字id # out out_ret int, #返回结果 out out_name varchar(20), #名字 out out_age int #年龄 ) label_a:begin declare v_name varchar(20) ; declare v_age tinyint ; #参数判断 if (in_id<=0) then set out_ret=-1; #id error leave label_a; end if; SELECT name,age into v_name,v_age from student where id=in_id limit 1; if v_age is NULL then set out_ret=-2; #don't found leave label_a; end if; set out_ret=0; set out_name=v_name; set out_age=v_age; end; // delimiter ;
5、c语言调用存储过程
调用方法或步骤:
5.1、初始化Mysql句柄
if(!mysql_init(&mysql)) { printf("mysql_init failed!\n"); return 0; }
5.2、连接到mysql
//login or connect if(!mysql_real_connect(&mysql,"localhost","root","","billingdb",0,NULL,CLIENT_MULTI_STATEMENTS)) { printf("mysql_real_connect() failed!\n"); mysql_close(&mysql); return 0; }
5.3、调用存储过程
//call strcpy(query,"call querystudent (1,@ret,@ out_name,@ out_age)"); printf("query sql=[%s]\n",query); ret= mysql_real_query(&mysql,query,(unsigned int)strlen(query));
5.4、查询结果集并保存
mysql_query(&mysql, "SELECT @ret,@ out_name,@ out_age "); //get result if (ret) { printf("Error exec query: %s\n",mysql_error(&mysql)); } else { printf("[%s] exec...\n", query); } results = mysql_store_result(&mysql);
5.5、获取查询结果
while((record = mysql_fetch_row(results))) { printf("[%s]-[%s]-[%s]\n", record[0], record[1],record[2]); }
一般存储过程只会有一行的返回结果,^_^.
5.6、释放资源与mysql连接句柄
mysql_free_result(results); mysql_close(&mysql);
6、结束语
Mysql存储过程可以实现相当强大的功能,这里只是抛砖引玉的做一些实践,期望能够给大家一些帮助。也欢迎大家交流…
——转
发表评论
-
记录一次mysql 慢查询的处理
2016-09-02 16:09 430MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执 ... -
mysql
2016-03-18 17:55 0添加自增长的主键: alter table block_ta ... -
mysql c
2012-08-11 15:26 0http://www.mysql.com/downloads/ ... -
修改mysql 引擎
2012-06-29 16:58 786ALTER TABLE tablename ENGINE=MY ... -
sql中truncate,delete,drop的区别
2012-06-29 15:11 0这三个命令的相同点truncate和不带where子句的del ... -
mysql
2012-06-14 17:24 0show processlist; 查看目前处于处于操作的进程 ... -
mysql 的 c api
2011-07-26 15:37 712中文版文档URL如下: http://dev.mysql.c ... -
mysql
2011-04-19 20:55 836引用 mysql> create database k ...
相关推荐
c++实现调mysql存储过程,实现存储过程的出参入参,可以支持查询多数据返回,还有存储过程的复杂数据的增删改等
使用C/C++调用MySQL存储过程不仅可以简化应用程序的开发,还能显著提升系统的性能和安全性。本文将详细介绍如何在C/C++中调用MySQL存储过程,包括创建存储过程、编写C/C++代码进行调用等步骤。 #### 二、环境准备 ...
此外,对于更复杂的操作,如事务处理、存储过程的调用,可以进一步学习MySQL Connector/C的高级特性。总的来说,这个资源提供了一个便捷的起点,帮助开发者快速掌握C/C++与MySQL数据库的连接和交互。通过阅读和实践...
《程序逻辑抽取器》-PLEA支持c/c++/esqlc,数据库支持Oracle/informix/mysql。 通过对源码的抽取,将函数,存储过程,以及它们的调用关系和数据操作形式以报告的形式呈现给使用者。 通过对函数、变量、宏、类型成员...
在本例中,我们关注的是如何使用C API来调用MySQL数据库中的存储过程,以实现对数据的增、删、改、查(CRUD)操作。MySQL是一个广泛使用的开源关系型数据库管理系统,它提供了丰富的API供开发者使用。 首先,要使用...
根据提供的文件信息,我们可以推断出本视频教程的第四部分主要关注的是如何在C/C++环境中操作和使用数据库,特别是MySQL和Oracle这两种广泛使用的数据库管理系统。下面将详细展开这一主题的相关知识点。 ### C/C++...
这个版本的C/C++连接驱动允许开发者使用C或C++编程语言直接与MySQL数据库进行交互,为应用程序提供数据存储和检索功能。在描述中提到,它也是Qt最新版本中编译MySQL驱动所必需的库文件,因为Qt官方不再随发行版附带...
在实际开发中,通常会使用如MySQL、PostgreSQL或SQLite等SQL数据库系统,它们都有成熟的C/C++库供开发者调用。例如,MySQL的Connector/C++库,PostgreSQL的libpq库,以及SQLite的sqlite3库。 系统设计时,可以采用...
在IT领域,数据库是数据...总结,用C调用MySQL数据库的存储过程涉及连接数据库、预处理SQL命令、绑定参数、执行存储过程、处理结果集以及释放资源等多个步骤。理解这些步骤和相关函数的使用是成功实现这一目标的关键。
MySQL是另一种广泛使用的开源数据库,其C/C++接口(libmysqlclient)类似,但API略有不同,开发者需学习相应的连接、查询和处理机制。 对于初学者,这个源码示例提供了很好的学习起点,可以深入理解数据库访问的...
9. **数据库连接**:更先进的系统可能会将数据存储在数据库中,如MySQL或SQLite,这时就需要了解如何在C/C++中进行数据库操作,如SQL查询和结果集处理。 10. **测试与调试**:实验报告可能涵盖了单元测试、集成测试...
在这个主题中,我们将深入探讨“C++调用MySQL的所有组件”,主要包括`mysql.h`头文件以及`libmySQL.dll`和`libmySQL.lib`库文件。 1. **mysql.h**: 这是MySQL C API的核心头文件,包含了所有用于连接、查询、结果...
初始化连接的方法`initConnection()`通常会调用MySQL的`mysql_init()`和`mysql_real_connect()`函数来建立连接。`runSQLCommand(std::string sql)`方法执行SQL命令,并返回一个布尔值表示是否成功。 在执行查询后,...
在C++中调用MySQL的存储过程,通常通过`mysql_callproc()`函数,传入存储过程名和参数。返回值和结果集可以通过`mysql_store_result()`和`mysql_use_result()`处理。这种封装对于提高性能、减少网络传输以及实现复杂...
在Linux环境下,C/C++开发数据库连接池是提高应用程序性能和效率的重要技术。数据库连接池是一种管理数据库连接的机制,它允许程序重复使用已建立的数据库连接,而不是每次需要时都创建新的连接。这减少了创建和销毁...
MySQL是一款广泛使用的开源关系型数据库管理系统,其C++接口提供了与数据库交互的能力。...通过理解这些文件,开发者可以学习到如何在C++中高效地操作MySQL数据库,为自己的应用程序提供数据存储和检索的功能。
本文将详细探讨如何在VS或VC++环境中使用C++调用MySQL数据库。 首先,我们需要了解C++与MySQL交互的基础。MySQL提供了一个名为`libmysqlclient`的库,它包含了C接口,允许C++代码直接与MySQL服务器通信。在VS或VC++...
本资源包含Linux下MySQL的库文件、头文件以及一个调用MySQL API的示例程序,这将帮助我们理解如何在C/C++中连接并操作MySQL数据库。 首先,MySQL的库文件(通常以`.so`动态链接库或`.a`静态链接库形式存在)是C/C++...
MySQL Connector/C++是MySQL数据库的一款C++接口,它允许C++开发者通过标准的JDBC API与MySQL数据库进行交互。在本案例中,我们讨论的是专为Visual Studio 2013编译的MySQL Connector/C++ 1.6版本。这个版本确保了与...