标签: isqlquery

在执行ISQLQuery.UniqueResult <DateTime>()时,如何让SQLite返回正确的DateTime?

TLDR:

以下代码在不同的数据库Oracle:select sysdate from dualSQLite中运行select datetime('now')

Session.CreateSQLQuery(cmd).UniqueResult<DateTime>()对Oracle 进行操作时,结果是一个DateTime,而在对SQLite进行操作时是一个字符串.

感觉就像SQLite驱动程序中的一个错误,以及检查返回类型的hack,如果它是一个字符串,则执行DateTime.Parse().我可以这样做,但是有没有办法让NHibernate返回正确的类型?

我试图从数据库中获取当前数据库时间.它在使用Oracle时工作正常,但是当我尝试对SQLite(在我的单元测试中)时,它会因为返回的日期不是DateTime而是字符串而中断.

我见过使用自定义IUserType的解决方案,但在这种情况下我无法看到我应该如何使用它.有什么建议?

using System;
using System.Collections.Generic;
using NHibernate;
using NHibernate.Criterion;
using NHibernate.Dialect.Function;

namespace My.Common.Types {

    public class MyNHibernateDialectException : Exception {
        public MyNHibernateDialectException(string message) : base(message) { }
    } 

    /// <summary>
    /// Define all custom functions here by name. It is important that when adding a new custom sql function, that function will work
    /// in all dialects supported.
    /// </summary>
    public static class MyDatabaseDialects { …
Run Code Online (Sandbox Code Playgroud)

c# sqlite nhibernate datetime isqlquery

6
推荐指数
1
解决办法
1367
查看次数

Oracle SQL比较包含数字的字符串,从0开始(零)

我有一个Date列,实际上不是日期格式.日期如下:25/10/2012.现在我必须比较2个日期,但我找不到这样做的模式,因为格式错误.

我试过的是:

 SELECT * 
   from PARAMETER
  where NAME like 'Date_To' and SUBSTR(VALUE, 1, 2)<'25' 
    and SUBSTR(VALUE, 1, 2)>'05'
Run Code Online (Sandbox Code Playgroud)

我面临的问题是这一部分:SUBSTR(PA_VALUE, 1, 2)>'05'不起作用,因为数字前面有0(零).有什么解决方案吗?

sql oracle isqlquery

5
推荐指数
1
解决办法
1506
查看次数

带byte []参数的NHibernate ISQLQuery引发错误

因此,我正在尝试使用nhibernate调用保存图像的存储过程。我的问题是查询失败,并显示以下错误:

byte []值的长度超过在映射/参数中配置的长度。

这是我将参数附加到的地方ISQLQuery。参数为Dictionary<string, object>

public void Execute()
{

    string sql = BuildSprocDefinition();
    var query = Session.CreateSQLQuery(sql);

    foreach (var parameter in Parameters)
    {
        if (parameter.Value is int)
            query.SetParameter<int>(parameter.Key, (int)parameter.Value);
        else if (parameter.Value is long)
            query.SetParameter<long>(parameter.Key, (long)parameter.Value);
        else if (parameter.Value is bool)
            query.SetParameter<bool>(parameter.Key, (bool)parameter.Value);
        else if (parameter.Value is byte[])
            query.SetBinary(parameter.Key, (byte[])parameter.Value);
        else
            query.SetParameter(parameter.Key, parameter.Value);
    }

    using (var tx = Session.BeginTransaction())
    {
        query.ExecuteUpdate();
        Session.Flush();
        tx.Commit();
    }
}

protected string BuildSprocDefinition()
{
    StringBuilder sql = new StringBuilder(String.Format("exec {0} ", …
Run Code Online (Sandbox Code Playgroud)

nhibernate bytearray fluent-nhibernate isqlquery

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

如何使用 isql 执行存储在 shell 脚本变量中的 SQL 语句

所以,我正在尝试使用 isql 执行存储在 shell 脚本变量中的 SQL 语句

附上通用代码。

SQL="select * from Student"

EMPLOYEES=`isql -U $USERNAME -P $PASSWORD -D $DATABASE -S $SERVER<<EOF
$SQL
go
Run Code Online (Sandbox Code Playgroud)

但是,在执行此操作时,我收到一个错误,例如:关键字“Select”附近的语法不正确和“=”附近的 suntax 不正确

任何人都知道如何执行直接存储在 isql 变量中的 SQL 查询?

shell isql isqlquery

0
推荐指数
1
解决办法
3万
查看次数