免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6865 | 回复: 17

[其他] 有熟悉 mysql 的没, 是mysql 烂还是我不行? [复制链接]

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
发表于 2017-09-15 20:26 |显示全部楼层
本帖最后由 zylthinking 于 2017-09-15 20:28 编辑

第一次使用 mysql c库 + mysql 存储过程, 碰到了一系列问题;
比如临时表只能打开一次什么的, 恶心的不行, 但总算是已知问题, 绕过去了;
但最后又碰到一问题, 如下 sync_items 是一个返回表的存储过程, 也就是最后一个语句是 select
问题来了, 根据调用的参数不同, 如果返回的不是空表, 则一切正常, 如果一旦是空表, 居然函数不返回了
我就日了, 不知道是 mysql 就是这么烂还是调用的哪里不对?
  1.     const char sql[] = "call sync_items(?)";
  2.     MYSQL* mysql = conn_get();
  3.     if (mysql == NULL) {
  4.         return -1;
  5.     }

  6.     MYSQL_STMT* stmt = mysql_stmt_init(mysql);
  7.     if (stmt == NULL) {
  8.         conn_put(mysql, 0);
  9.         return -1;
  10.     }

  11.     int n = mysql_stmt_prepare(stmt, sql, sizeof(sql) - 1);
  12.     check(n);

  13.     MYSQL_BIND params[6] = {0};
  14.     params[0].buffer_type = MYSQL_TYPE_STRING;
  15.     params[0].buffer = (void *) email;
  16.     params[0].buffer_length = strlen(email);
  17.     n = mysql_stmt_bind_param(stmt, ¶ms[0]);
  18.     check(n);

  19.     enum enum_cursor_type cursor = CURSOR_TYPE_READ_ONLY;
  20.     n = mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, &cursor);
  21.     check(n);

  22.    //--------------------------------------------------------------------------------这一行, 如果返回的不是空表, 则没问题, 一旦是空表, 则再也不返回了
  23.     n = mysql_stmt_execute(stmt);
  24.     check(n);
复制代码

  

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
发表于 2017-09-15 21:17 |显示全部楼层
我好像都已经放弃MySQL好久了。。。

除非是某些地方必须用这个,否则坚决不用。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
发表于 2017-09-16 11:09 |显示全部楼层
zylthinking 发表于 2017-09-15 20:26
第一次使用 mysql c库 + mysql 存储过程, 碰到了一系列问题;
比如临时表只能打开一次什么的, 恶心的不行 ...

看看存储过程怎么写的。

论坛徽章:
0
发表于 2017-09-18 08:40 |显示全部楼层
从效率来讲,调用数据库不管用什么语言都一样。
所以现在统一用Java做数据库接口,比如使用alibaba的druid。
c++再调用Java接口,可以用thrift,或者mq,或者rest。
c++负责系统相关的部分,比如网络通信(TCP,UDP),编解码等,比如音视频。
这里不是说用c++调用数据库不行,主要是类似druid这东西很让人放心,c++目前还没有开源出这样的产品,自己从头实现花的时间估计比学个新语言还要长。

论坛徽章:
0
发表于 2017-09-18 13:17 |显示全部楼层
我个人也是这么觉得的,mysql存储过程是个坑。反正我个人是打算放弃mysql。

论坛徽章:
0
发表于 2017-09-18 13:17 |显示全部楼层
但是公司不想放弃。也是真的醉了

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
发表于 2017-09-21 14:00 |显示全部楼层
存储过程,没玩过。

论坛徽章:
35
双子座
日期:2014-05-09 17:56:38程序设计版块每日发帖之星
日期:2015-08-30 06:20:00程序设计版块每日发帖之星
日期:2015-12-24 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-27 11:07:07程序设计版块每日发帖之星
日期:2016-01-12 06:20:0015-16赛季CBA联赛之北京
日期:2016-01-15 01:01:2115-16赛季CBA联赛之浙江
日期:2016-01-15 22:38:20程序设计版块每日发帖之星
日期:2016-01-18 06:20:00每日论坛发贴之星
日期:2016-01-18 06:20:0015-16赛季CBA联赛之北控
日期:2016-01-30 21:43:01程序设计版块每日发帖之星
日期:2016-02-08 06:20:0015-16赛季CBA联赛之山西
日期:2016-02-20 10:54:41
发表于 2017-10-13 11:12 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
发表于 2017-10-16 20:49 来自手机 |显示全部楼层
存储过程挺有意思的,几个复杂的sql语句,貌似还可以带变量,脚本啊

论坛徽章:
0
发表于 2017-10-17 17:57 |显示全部楼层
放弃mysql用什么替代?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP