C# Oracle无效字符和长RAW
我是Oracle世界的新手,我正在尝试使用参数化查询从.NET(C#)进行插入 我的桌子是:C# Oracle无效字符和长RAW,c#,oracle,long-integer,C#,Oracle,Long Integer,我是Oracle世界的新手,我正在尝试使用参数化查询从.NET(C#)进行插入 我的桌子是: CREATE TABLE layer_mapping ( lm_id NUMBER NOT NULL, lm_layer_name VARCHAR2(50) NOT NULL, lm_layer_file LONG RAW NOT NULL, CONSTRAINT lm_pk PRIMARY KEY(lm_id) ) “插入图层映射值(:lm_id,:lm_图层名称,:
CREATE TABLE layer_mapping
(
lm_id NUMBER NOT NULL,
lm_layer_name VARCHAR2(50) NOT NULL,
lm_layer_file LONG RAW NOT NULL,
CONSTRAINT lm_pk PRIMARY KEY(lm_id)
)
“插入图层映射值(:lm_id,:lm_图层名称,:lm_图层文件);”
在VisualStudio中,上面的查询是在运行时生成的,我的BindByName=true
“lm_layer_file”值(我怀疑错误在这里)是从一个文件馈送到一个类的,它是一个字节数组。下面是这门课的一个例子
public class LayerMapping()
{
private Int32 _id;
private String _name;
private Byte[] _file;
}
奇怪的是,使用PostgreSQL,一切正常,没有错误
我是否使用了错误的方法来生成长原始值
哦,我收到的错误是ORA-0991(无效字符)
有什么想法吗?我想说,你应该做的第一件事是在表中使用CLOB,假设你是在9i或更高的水平上,而不是长时间的RAW。LONG/LONG RAW已经过时很长一段时间了——Oracle保留它们的唯一原因是因为它们存在于数据字典中,Oracle承诺永远不会更改它。我想说,您应该做的第一件事是在表中使用CLOB,假设您使用的是9i或更高,而不是LONG RAW。LONG/LONG raw已经过时很长一段时间了——Oracle保留它们的唯一原因是因为它们存在于数据字典中,Oracle承诺永远不会更改它。找到了答案: 我的sql命令生成器添加了一个“;”在命令的末尾,但OracleCommand类似乎也这样做了 解决了。解决了: 我的sql命令生成器添加了一个“;”在命令的末尾,但OracleCommand类似乎也这样做了 解决了