帮我写一段C语言代码实现将接收到的用户名、密码、头像存入MySQL数据库,接受到的用户名和密码为string类型,头像为qbytearray类型,数据库中密码和用户名的字段为varchar类型,头像为mediumblob类型
时间: 2024-05-08 14:18:22 浏览: 158
好的,根据您的要求,我可以提供以下的 C 语言代码段:
``` c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.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) {
MYSQL *con = mysql_init(NULL);
if (con == NULL) {
fprintf(stderr, "mysql_init() failed\n");
exit(1);
}
if (mysql_real_connect(con, "localhost", "username", "password",
"database", 0, NULL, 0) == NULL) {
finish_with_error(con);
}
char *username = "example";
char *password = "password";
char *avatar = "path/to/image.png";
char query[1024] = { 0 };
sprintf(query, "INSERT INTO users (username, password, avatar) VALUES ('%s', '%s', LOAD_FILE('%s'))", username, password, avatar);
if (mysql_query(con, query)) {
finish_with_error(con);
}
mysql_close(con);
exit(0);
}
```
该代码段将会连接到本地的 MySQL 数据库,并将接收到的用户名、密码和头像信息存入名为 `users` 的表格中。其中,`username` 和 `password` 为字符串类型,`avatar` 为二进制数据,存储在指定的文件中。在 SQL 查询语句中,我们使用了 MySQL 的 `LOAD_FILE()` 函数对文件进行读取,将其作为二进制数据插入到数据库中。
注意,为了使该示例代码能够顺利编译和运行,您需要在编译命令行中添加 MySQL 的连接库,例如:
``` shell
gcc -o example example.c -lmysqlclient
```
同时,您还需要在 MySQL 中创建名为 `database` 的数据库,并在其中创建名为 `users` 的表格。表格结构可以如下定义:
``` sql
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
avatar MEDIUMBLOB NOT NULL,
PRIMARY KEY (id)
);
```
阅读全文