在C语言中,大家可以使用MySQL中的mediumblob类型进行二进制数据的存储和操作。Medium Blob是一种MySQL的数据类型,用于处理中等大小的二进制数据,通常用于存储图片文件、音频文件等二进制文件数据。
使用mediumblob类型需要注意的是,其在数据库中的最大存储空间是16M,超过这个大小需要使用longblob类型。
下面是使用C语言操作MySQL mediumblob类型的代码示例:
#include <mysql/mysql.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #define MAX_LEN 1000000 int main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; char *user = "root"; char *password = "password"; char *database = "mydb"; char *blob_data = "this is a medium blob data"; char query[MAX_LEN]; int query_len = 0; int blob_len = 0; int id; conn = mysql_init(NULL); if(!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)){ fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } //创建表 query_len = sprintf(query, "CREATE TABLE mytable (id INT NOT NULL AUTO_INCREMENT, blob_data MEDIUMBLOB, PRIMARY KEY(id))"); if(mysql_query(conn, query)){ fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } //插入数据 blob_len = strlen(blob_data); query_len = sprintf(query, "INSERT INTO mytable (blob_data) VALUES ('%*.*s')", blob_len, blob_len, blob_data); if(mysql_query(conn, query)){ fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } //获取数据 query_len = sprintf(query, "SELECT * FROM mytable"); if(mysql_query(conn, query)){ fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } res = mysql_use_result(conn); while((row = mysql_fetch_row(res)) != NULL){ printf("The id %s contains medium blob data: ", row[0]); id = atoi(row[0]); printf("%s\n", row[1]); } //删除数据 query_len = sprintf(query, "DELETE FROM mytable WHERE id=%d", id); if(mysql_query(conn, query)){ fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } //删除表 query_len = sprintf(query, "DROP TABLE mytable"); if(mysql_query(conn, query)){ fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } mysql_free_result(res); mysql_close(conn); return 0; }