linux 环境下 c语言实现mysql数据库图片的存储以及多数据库直接的转存
2015-01-23 15:45
603 查看
作为一个程序员,CSDN对我的编程带来了很多帮助和提高,在这里可以让你找到很多开发过程中遇到的问题的解决办法,今天也写点自己积累的东西跟大家分享一下,希望对需要的人有帮助.
资料背景:
之前项目一直使用oracle数据,最近换工作,公司使用的为mysq数据库,项目中需要将A数据库保存的图片数据转存到另外一个远程数据库B,存储图片使用的类型为longblob,LongBlob (lang binary large
object),二进制大对象,是一个可以存储二进制文件的容器。longblob这里不做详细介绍。下面将如何进行数据存储的操作贴出来,只是一个简单的demo,实际应用还要根据实际需求修改,但也包含了图片下载和图片转存的功能。代码如下:
借鉴资料:点击打开链接 http://zetcode.com/tutorials/mysqlcapitutorial/
资料背景:
之前项目一直使用oracle数据,最近换工作,公司使用的为mysq数据库,项目中需要将A数据库保存的图片数据转存到另外一个远程数据库B,存储图片使用的类型为longblob,LongBlob (lang binary large
object),二进制大对象,是一个可以存储二进制文件的容器。longblob这里不做详细介绍。下面将如何进行数据存储的操作贴出来,只是一个简单的demo,实际应用还要根据实际需求修改,但也包含了图片下载和图片转存的功能。代码如下:
#include <my_global.h> #include <mysql.h> #include <string.h> void finish_with_error(MYSQL *con) { fprintf(stderr, "%s\n", mysql_error(con)); mysql_close(con); exit(1); } int main(int argc, char **argv) { /*测试用将图片保存本地*/ FILE *fp = fopen("woman2.jpg", "wb"); if (fp == NULL) { fprintf(stderr, "cannot open image file\n"); exit(1); } /*连接数据A*/ MYSQL *con = mysql_init(NULL); if (con == NULL) { fprintf(stderr, "mysql_init() failed\n"); exit(1); } if (mysql_real_connect(con, "localhost", "root", "1qazxsw2#", "QR", 0, NULL, 0) == NULL) { finish_with_error(con); } /*查询A数据库的图片数据*/ if (mysql_query(con, "SELECT IMG_B FROM QR_IMG WHERE QRNUM='3691746087775941894'")) { finish_with_error(con); } MYSQL_RES *result = mysql_store_result(con); if (result == NULL) { finish_with_error(con); } MYSQL_ROW row = mysql_fetch_row(result); unsigned long *lengths = mysql_fetch_lengths(result); if (lengths == NULL) { finish_with_error(con); } /*连接远程数据B*/ MYSQL *con1 = mysql_init(NULL); if (con1 == NULL) { fprintf(stderr, "mysql_init() failed\n"); exit(1); } if (mysql_real_connect(con1, "localhost", "root", "1qazxsw2#", "card", 0, NULL, 0) == NULL) { finish_with_error(con); } /*图片数据进行转义,存储图片的关键步骤*/ char chunk[2*lengths[0]+1]; mysql_real_escape_string(con, chunk, row[0], lengths[0]); /*数据插入B数据库*/ char *st = "INSERT INTO card_pack(code_img) VALUES('%s')"; size_t st_len = strlen(st); char query[st_len + 2*lengths[0]+1]; int len = snprintf(query, st_len + 2*lengths[0]+1, st, chunk); if (mysql_real_query(con1, query, len)) { finish_with_error(con); } /*保存到本地,用来测试用判断图片时候下载成功*/ fwrite(row[0], lengths[0], 1, fp); if (ferror(fp)) { fprintf(stderr, "fwrite() failed\n"); mysql_free_result(result); mysql_close(con); exit(1); } int r = fclose(fp); if (r == EOF) { fprintf(stderr, "cannot close file handler\n"); } mysql_free_result(result); mysql_close(con); mysql_close(con1); exit(0); }
借鉴资料:点击打开链接 http://zetcode.com/tutorials/mysqlcapitutorial/
相关文章推荐
- linux 环境下 c语言实现mysql数据库图片的存储以及多数据库直接的转存
- java+mysql实现保存图片到数据库,以及读取数据库存储的图片
- 浅谈Access数据库的缺陷以及数据库应该直接存储图片还是存储图片路径
- java+mysql实现保存图片到数据库,以及读取数据库存储的图片
- Linux下安装MySQL数据库以及用C语言编程存取数据库
- linux下GCC编译环境中二叉树遍历、C语言实现以及调试过程中段错误
- Linux环境用C语言实现读取配置文件来区分产品的多个版本以及多个功能
- java+mysql实现保存图片到数据库,以及读取数据库存储的图片
- Linux下安装MySQL数据库以及用C语言编程存取数据库
- java+pgsql实现保存图片到数据库,以及读取数据库存储的图片
- java+mysql实现保存图片到数据库,以及读取数据库存储的图片
- 用C#实现图片数据库存储与显示
- Asp.net 中图片存储数据库以及页面读取显示通用方法详解-附源码下载
- Asp.net中图片存储数据库以及页面读取显示通用方法详解
- 用C#实现图片存储与读取数据库
- 向数据库存储并读取图片的实现
- 在Linux环境下单机上实现MySQL5主从数据库同步复制
- Win form 在pictureBox控件中实现选择图片然后以二进制方式保存到数据库。以及在pictureBox控件显示出来
- Asp.net中图片存储数据库以及页面读取显示通用方法详解-附源码下载