QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 753|回复: 4

请教一个困惑了很久的问题,多谢回复!

[复制链接]
发表于 2004-12-22 17:31:00 | 显示全部楼层 |阅读模式
在使用mysql的C API接口编程的时候,如何将一个数据包(比如网络上的一个IP数据包的所有内容),存到数据库里面去?看了很多帮助也没有找到这方面的提示。仅仅知道可以存到BLOB类型的列,但具体用什么函数,还是直接用SQL语句?请知道的大侠给个提示。先谢了
发表于 2004-12-22 17:52:16 | 显示全部楼层
大概就这个意思吧
[code:1]
char buf[1024 + 1] = {0};

snprintf(buf, 1024, "INSERT INTO table_name SET col_name='%s';", package_content);

mysql_real_query(mysql, buf, strlen(buf));
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2004-12-23 15:45:27 | 显示全部楼层
非常感谢您的回复!
我还有一个问题,用strlen()的话,如果我的数据包里面有字符串结束标志的话该如何处理?是不是要用到mysql_real_escape_string()这个函数呢?
回复

使用道具 举报

发表于 2004-12-23 17:21:26 | 显示全部楼层
[quote:d1af1ea0bd="sober"]非常感谢您的回复!
我还有一个问题,用strlen()的话,如果我的数据包里面有字符串结束标志的话该如何处理?是不是要用到mysql_real_escape_string()这个函数呢?[/quote]

mysql_real_escape_string是处理 ',",\…… 这样的特殊字符的
回复

使用道具 举报

 楼主| 发表于 2004-12-26 22:48:42 | 显示全部楼层
如果数据包内容里面有这些特殊字符,因为数据包里面有很多字节是0,这样就会有问题。因此是不是必须用mysql_real_escape_string()函数?
还有一个问题请教,我的测试代码如下:
编译用gcc -o test test.c -lmysqlclient
编译没有错误,可运行test的时候出来错误提示为:
Segmentation fault
这个问题会是什么原因?谢谢回复
[code:1]
#include <stdio.h>
#include <mysql/mysql.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
    MYSQL test;
    char *srcstr="What's this";
    char *tostr;
    tostr = malloc(23);
    mysql_real_escape_string(&test,tostr,srcstr,strlen(srcstr));
}
[/code:1]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 21:45 , Processed in 0.042695 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表