2008-08-02
MySQL有一个二进制数据类型longblob,可以用来存放二进制数据。那么如何对MySQL进行该类数据的存取呢?
通过参考资料[2](非常感谢该文作者),发现可以直接通过C语言往MySQL中存取二进制数据。
下面先创建一个数据表test,该表的data字段为longblog类型。
$ mysql -u USER -pPASSWD |
接着,我们来写一个C语言程序,通过该程序往该表的data字段存入一个二进制文件,紧接着从数据库中取出该字段的内容写入另外一个文件中,从而演示longblob数据的存和取操作。
Code:
[Ctrl+A Select All]
通过分析源代码不难发现,这里跟存取普通的数据差不多,只是通过mysql_real_escape_string函数在二进制数据外面加了一层“东西”。
okay,开始编译和运行。
记得编译之前需要安装对应的mysql函数库,在ubuntu 8.10下可以这么安装。
$ sudo apt-get install libmysqlclient15-dev |
编译前还需要设置数据库名、表名、用户名和密码,否则编译后无法正常连接数据库。
下面开始编译。
$ gcc -o mysql_binary mysql_binary.c -lmysqlclient |
运行一下,
//先删除之前的数据 |
实际上在postgresql中也可以进行二进制文件的操作,不过不是很方便,如果感兴趣可以参考一下资料[3,4,5,6,7]。
参考和推荐资料
[1] MYSQL中如何存取二进制文件(PHP版)
http://net.stuun.com/database/MySQL/jiqiao/45070.html
[2] C语言实现myql中存取二进制文件
http://linux.chinaitlab.com/MYSQL/383265.html
[3] Storing Binary Data
http://jdbc.postgresql.org/documentation/80/binary-data.html
[4] Chapter 31. Large Objects
http://www.postgresql.org/docs/8.3/interactive/largeobjects.html
[5] PostgreSQL libpq Programming Example
http://www.hungryhacker.com/articles/code/libpq_example.html
[6] ECPG - Embedded SQL in C
http://www.postgresql.org/docs/7.4/static/ecpg.html
[7] Linux下免费数据库PostgreSQL开发入门
http://www-128.ibm.com/developerworks/cn/linux/l-pgsql/index.html
[版权声明]BSD爱好者乐园站内文章,如来源不是互联网,则均系原创或翻译之作,可随意转载,或以此为基础进行演译,但务必以链接形式注明原始出处和作者信息,否则属于侵权行为。另对本站转载他处文章,俱有说明,如有侵权请联系本人,本人将会在第一时间删除侵权文章。
[站长微博]欢迎访问剑心通明的腾讯微博, BSD爱好者微群, 点击此处开通微博同时与剑心互听
TAG: 二进制
