- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 C 语言编码并使用 Postgresql 的 Libpq 库,我想以“bytea”类型将 PNG 图像存储到数据库中。我在网上搜索了几个小时,找不到处理这项工作的好例子,所以想在这里写下来寻求你的帮助。
我有 12 个参数要绑定(bind),其中之一是 PNG 图像。其余的都是char*,用起来没问题。
以下是我到目前为止所尝试过的。 (我正在编写代码的必要部分):
PGresult *res;
PGconn *conn;
const char *paramValues[12];
int paramLengths[12];
int paramFormats[12];
const char* imageFrame=frameImageArray.data();// frameImageArray.data is const char*.
int imageSize=frameImageArray.size();
paramFormats[11]=1;
paramLengths[11]=imageSize;
paramValues[11]= imageFrame;
// insertplate is a function on db
res = PQexecParams(conn,
"SELECT insertplate($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12)",
12, // param number
NULL, // oid param type
paramValues, // param values
paramLengths, // param lengths
paramFormats, // params format, 1 for binary
1); //1 for binary result
编译没有问题,但是当在运行时将图像存储到数据库时,会出现经典的运行时错误:
“..._debug.exe 中 0x6d3dc220 处出现未处理的异常:0xC0000005:读取位置 0x000000007f91e508 时发生访问冲突。”
似乎与内存处理有关。
无论我尝试什么,我都无法让它运行,而且我也看不到我的错误。我是否必须使用 Oids 通过 PQexecParams 将二进制数据发送到数据库?还是我还缺少其他东西?如果有人帮助我,我真的很感激。
提前致谢。
编辑:我刚刚意识到,如果我使用 Insert 语句,它可以很好地工作,但这个函数却不能。正常情况下是有效的。诡异的。
最佳答案
终于找到错误了。
//paramFormats[0]=0;
//paramFormats[1]=0;
//paramFormats[2]=0;
//paramFormats[3]=0;
//paramFormats[4]=0;
//paramFormats[5]=0;
//paramFormats[6]=0;
//paramFormats[7]=0;
//paramFormats[8]=0;
//paramFormats[9]=0;
//paramFormats[10]=0;
//paramFormats[11]=1;
可以将“参数格式”保留为 NULL,但我只想设置“paramFormats[11]”,如上所示。我也将其他设置为 0 并且有效。我没想到会有这样的事情。
关于c - 使用 libpq 库将图像发送到 postgresql 数据库中的 bytea 列时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15411803/
我是 PostgreSQL 的新手。我想在 Postgres 中将我的列数据类型之一从 bytea[] 更改为 bytea。我尝试了以下查询,但它给出了错误 cannot cast type byte
我正在编写一个函数,它将从大对象中读取数据并将其与作为 arg 提供的数据进行比较。 (我想确保我写的是正确的,这是写后完整性检查) 我已经想出了如何分块读取大对象 fd := lo_open(
我得到了 answer检查 PostgreSQL 文本列中的某个 BOM。我真正喜欢做的是拥有更通用的东西,即像 select decode(replace(textColumn, '\\', '\\
在 PostgreSQL 中,如何将 NUMERIC 值转换为 BYTEA 值?和 BYTEA 到 NUMERIC?使用 TEXT 值我可以使用 CONVERT_TO() 和 CONVERT_FROM
紧随this example ,我正在上传一个小文件并尝试存储到 postgresql bytea 列中。 这是错误(前两个输出是在尝试 INSERT 之前输出 bean 属性的日志记录语句: SAG
嗨,在我的 spring boot postgresql 应用程序中,我想执行以下 sql 查询。 SELECT o.id as projectId,
在 PostgreSQL 8.4 中是否可以将多个整数 (int4) 值连接到一个 bytea 值? 例如: 5::int4 || 1::int4 应该产生一个带有 (0x05 0x00 0x00 0
我正在尝试从存储为 bytea 的 Postgres 数据库中获取一个值。 这些值是 VLAN ID(因此是 1-4096 之间的整数)。 但是,它存储在数据库中(例如): \000\000\001\
我知道您可以将图像文件存储到 bytea 列,但是如果您需要在该列中存储与该行关联的多个图像怎么办?您是否被迫创建另一个引用该行的表?我试图避免这种情况,因为每一行都是表格数据的一部分,我需要一个图像
我的数据库中有一个存储日志的表。日志文件带有秒级精度的时间戳,并存储各种传感器的值及其来源: log_id, log_date, primary_system_source, sub_system_s
我将图像存储在 bytea 字段中的 postgresql 9.1 数据库表中。我想做一个查询来按尺寸排序并显示它们的尺寸。我需要这个,因为有一些大图像会导致延迟问题。 最佳答案 select len
我需要解码 base64 字符串并获取一大块二进制文件。 Postgres 中是否有一个SQL 函数可以简单地将bytea 转换为二进制字符串表示形式? (例如“00010001010101010”。
在 PostgreSQL 中,有一个名为 bytea 的 BLOB 数据类型。它只是一个字节数组。 bytea 字面量以下列方式输出: '\\037\\213\\010\\010\\005`Us\\0
我在 PostgreSQL 中使用 bytea 类型,据我所知,它只包含一系列字节。但是,我无法让它与 null 一起玩。例如: =# select length(E'aa\x00aa'::bytea
这是我的代码: List ids= new ArrayList(); ids.add(10L);ids.add(11L); String queryString ="sel
在 Postgres 中有一个数据类型叫做 bytea 为此提供了 Postgres 文档:http://www.postgresql.org/docs/9.0/static/datatype-bin
我在postgresql中有一张表用来存储文件信息。 select id,filestream,name from Table_file_info 这里的filestream是bytea数据类型。如何
为了在 PostgreSQL 中处理 bytea 值,我通常会序列化到十六进制并从十六进制反序列化。这似乎是首选方式。但是,PostgreSQL 服务器上实际存储的是什么?它是十六进制还是未十六进制的
我想了解如何在 postgresql (v 8.3) 中处理二进制数据。假设我有一个下表 Table "public.message" Column | Type | Modifiers --
我正在尝试分析 Postgresql 数据库中的数据,该数据库是 Json 文本但存储在 bytea 列中。一些行可以转换,但其他行不能。文本中没有代码点的 Json 在转换编码的 bytea 时工作
我是一名优秀的程序员,十分优秀!