列错误中的冒号 ':' - 并非所有命名参数都已在 Nhibernate 中设置?

Posted

技术标签:

【中文标题】列错误中的冒号 \':\' - 并非所有命名参数都已在 Nhibernate 中设置?【英文标题】:Colon ':' in column error - Not all named parameters have been set in Nhibernate?列错误中的冒号 ':' - 并非所有命名参数都已在 Nhibernate 中设置? 【发布时间】:2020-02-03 04:04:07 【问题描述】:

我有一个表,其中的列中有冒号。我试图找出一种在尝试查询数据库时忽略冒号作为参数的方法。我曾尝试使用 SetParameter 和 String.Format 但它不起作用。我也试图用 :: 和 \ 来逃避冒号,但没有运气。请参阅下面的示例

var result = session.CreateSQLQuery("Select id, [Results: A] as ResultsA, [Results: B] as ResultsB FROM Table").SetResultTransformer(Transformers.Alias.ToBean<TableObject>()).List<TableObject>();

【问题讨论】:

【参考方案1】:

你也必须逃脱 colons\

尝试用\\:替换:

或者,you can add @ 在你的字符串之前避免\\

像这样:

var result = session.CreateSQLQuery(@"Select id, [Results\: A] as ResultsA, [Results\: B] as ResultsB FROM Table").SetResultTransformer(Transformers.Alias.ToBean<TableObject>()).List<TableObject>();

【讨论】:

不走运,当我使用 @ 或 \\: 时,它会进行查询 Select id, [Results\\: A] as ResultsA, [Results\\: B] as ResultsB FROM Table,但它仍然将冒号视为参数【参考方案2】:

检查异常详细信息,以及实际发送到 DB 的 SQL。

【讨论】:

以上是关于列错误中的冒号 ':' - 并非所有命名参数都已在 Nhibernate 中设置?的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01008: 并非所有变量都已绑定

求已SQL语句报错的问题,报啥并非所有的变量都已绑定,代码在补充中:

Pairwise T检验:complete.cases(x,y)中的错误:并非所有参数的长度都相同吗?

在 JDBC PL/SQL 块中多次使用命名参数时出错

PDO 准备好的语句 - 参数名称中的冒号用于啥?

MyBatis 整合Oracle 报错:java.sql.SQLException: ORA-01008: 并非所有变量都已绑定