相关疑难解决方法(0)

针对Oracle的C#参数化查询 - 严重且危险的错误!

这是绝对的咆哮.我不敢相信自己的眼睛,我不相信在我之前没有人会发现这个,如果它是C#中的一个真正的错误,所以我把它推出给其他开发者社区告诉我我做错了什么.我确定这个问题会让我说"DOH!" 用我的手掌非常用力地拍打我的头 - 但无论如何......

为了测试,我创建了一个表Test_1,脚本如下:

CREATE TABLE TEST_1 (
  COLUMN1 NUMBER(12) NOT NULL,
  COLUMN2 VARCHAR2(20),
  COLUMN3 NUMBER(12))
TABLESPACE USERS
STORAGE (
  INITIAL 64K
  MAXEXTENTS UNLIMITED
)
LOGGING;
Run Code Online (Sandbox Code Playgroud)

现在我执行以下代码:

var conn = new OracleConnection("connectionblahblah");
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = 
  "insert into Test_1(Column1, Column2, Column3) " +
  "values(:Column1, :Column2, :Column3)";
var p = cmd.Parameters;
p.Add("Column1", 1);
p.Add("Column3", null);
p.Add("Column2", "record 1");
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

哇!我收到ORA-01722错误 - "无效号码"!但是怎么了? Column1是数字,值为1,所以很好; Column2是一个字符串,Column3是一个可以为空的列,所以不应该造成任何麻烦......

现在请坐下来......这里的问题是,Column3Column2按照它们被添加到的顺序进行转换OracleParameterCollection.切换它们,并预先!有用! …

c# oracle ora-01722

36
推荐指数
2
解决办法
2万
查看次数

当我运行带参数的查询或命令时,为什么Dapper会抛出OracleException?

我是评价精致但我已经遇到了一些问题.

我想这样做

using (IDbConnection connection = GetConnection())
{
    connection.Open();
    var result = connection.Query(
        "select * from myTable where ID_PK = @a;", new { a = 1 });
}
Run Code Online (Sandbox Code Playgroud)

它在SqlMapper.cs的第393行抛出ORA-00936:缺少表达式OracleException

using (var reader = cmd.ExecuteReader())
Run Code Online (Sandbox Code Playgroud)

当我删除参数时,我将整个表放入结果变量中.

查询在sqldeveloper中没有问题.我正在使用Oracle.DataAccess Assembly 2.112.2.0

oracle orm exception oracle11g dapper

15
推荐指数
2
解决办法
3751
查看次数

Dapper.net Oracle参数

我正在尝试将Dapper.net与Oracle一起使用.

从这篇文章我明白我们可以使用没有前缀的参数,然后dapper将适用于sql serveroracle

如果没有明确的oracle命名参数前缀,我很难让它工作 :

以下查询

sqlConnection.Query("Select * FROM document WHERE id = param1", new { param1 = 963 });
Run Code Online (Sandbox Code Playgroud)

抛出 ORA-00904: "PARAM1": invalid identifier

如果我尝试使用@前缀,它会抛出ORA-00936: missing expression

如果我使用:前缀它按预期工作.但我不希望我的查询在Oracle或Sql Server上依赖(尽可能).

我使用的是最新的nuget软件包版本Dapper.dll 1.12.1.1

我做错了什么或者我误解了这篇文章

oracle dapper

7
推荐指数
1
解决办法
6160
查看次数

标签 统计

oracle ×3

dapper ×2

c# ×1

exception ×1

ora-01722 ×1

oracle11g ×1

orm ×1