色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c mysql longblob

劉柏宏2年前10瀏覽0評論

在c語言的mysql數據庫連接中,如果需要將二進制文件以及其他大文件進行存儲,需要使用mysql中的longblob類型。使用longblob類型可以在不影響程序效率的情況下,方便地進行大文件的讀寫操作。

//創建一個longblob類型字段的表
mysql_query(mysql, "CREATE TABLE table_name (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, data LONGBLOB)");
//向表中插入數據
FILE* file = fopen("file_path", "rb");//以二進制方式打開文件
fseek(file, 0, SEEK_END);//將文件指針定位到文件末尾
long file_size = ftell(file);//獲取文件大小
rewind(file);//將文件指針復位
char* buffer = (char*)malloc(sizeof(char)*file_size);//分配內存空間
fread(buffer, 1, file_size, file);//讀取文件內容
MYSQL_STMT* stmt = mysql_stmt_init(mysql);//初始化stmt
char* query = "INSERT INTO table_name (data) VALUES (?)";
MYSQL_BIND bind;
memset(&bind, 0, sizeof(bind));//初始化bind
bind.buffer = buffer;
bind.buffer_length = file_size;
bind.buffer_type = MYSQL_TYPE_BLOB;//綁定longblob類型
mysql_stmt_prepare(stmt, query, strlen(query));//預處理stmt
mysql_stmt_bind_param(stmt, &bind);//綁定參數
mysql_stmt_execute(stmt);//執行插入操作
//從表中讀取longblob類型字段的數據
MYSQL_RES* res = mysql_store_result(mysql);//將結果集保存在res中
MYSQL_ROW row = mysql_fetch_row(res);//從結果集中取得一行數據
unsigned long* length = mysql_fetch_lengths(res);//獲取數據長度
char* data = row[0];
int data_length = length[0];//獲取數據長度
//將longblob類型字段的數據寫入文件中
FILE* file = fopen("file_path", "wb");//以二進制方式打開文件
fwrite(data, 1, data_length, file);//寫入數據
fclose(file);

在以上代碼中,我們首先創建了一個longblob類型字段的表,并向表中插入一個數據。插入操作的流程為,打開文件并讀取其中的數據,在stmt中綁定該數據,并執行插入操作。然后我們通過查詢操作從表中取得longblob類型字段的數據,并將數據寫入文件中。

總之,使用longblob類型可以方便地進行大文件的存儲和讀寫操作。在c語言的mysql數據庫連接中,我們可以通過預處理stmt、綁定參數和將結果集保存在res中等方式,方便地進行longblob類型字段的讀寫操作。