如何使用QT在MYSQL数据库中存储文本文件?

时间:2016-09-13 12:40:52

标签: mysql qt

我有一个包含两列的表:ID,FILE; FILE列有BLOB类型; 我想将完整文件存储在数据库中而不是文件的内容中。 我想稍后以file_name.txt

的形式下载该文件

这是我尝试的方法,但在插入后,FILE为NULL;

 query.exec("INSERT INTO test(ID, FILE) VALUES(1, LOAD_FILE('/home/nemeth/Documents/list.txt'));

2 个答案:

答案 0 :(得分:0)


根据 MySQL documentation on LOAD_FILE(),该文件必须满足一些要加载的条件。不仅是本地的,还有权限和东西。

  

LOAD_FILE(FILE_NAME)

     

读取文件并以字符串形式返回文件内容。要用这个   功能,文件必须位于服务器主机上,您必须   指定文件的完整路径名,您必须具有FILE   特权。该文件必须是所有人都可读的,其大小必须小于   max_allowed_pa​​cket个字节。如果secure_file_priv系统变量是   设置为非空目录名称,要加载的文件必须是   位于该目录中。

     

如果文件不存在或因为其中一个而无法读取   如果不满足上述条件,则该函数返回NULL。

     

character_set_filesystem系统变量控制解释   以文字字符串形式提供的文件名。

您是否尝试过搜索一下?... Lookie here :p

答案 1 :(得分:0)

我无法弄清楚问题是什么,所以我解决了不同的问题。 我已将文件读入QByteArray并将数组插入数据库。

QByteArray byteArray = file.readAll();
QSqlQuery query;
query.prepare("INSERT INTO TEST_TABLE(ID, FILE) VALUES (1,?)");
query.addBindValue(byteArray);
query.exec();