我正在尝试使用c#对Firebird数据库执行查询,并且没有正确的东西。请注意,我正在对安装Firebird时获得的employee.fdb数据库示例执行这些查询。
以下作品。
string query = @"SELECT EMPLOYEE.HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE > '02.01.1990, 03.04.05.000'";
using (FbConnection connection = new FbConnection(connectionString))
using (DataContext db = new DataContext(connection))
{
List<employee> results = db.ExecuteQuery<employee>(query).ToList();
}
如果我参数化日期。
string query = @"SELECT EMPLOYEE.HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE > {0}";
using (FbConnection connection = new FbConnection(connectionString))
using (DataContext db = new DataContext(connection))
{
List<employee> results = db.ExecuteQuery<employee>(query, "02.01.1990, 03.04.05.000").ToList();
}
我收到System.FormatException:String未被识别为有效的DateTime。
我真正想做的就是使用DateTime对象。
string query = @"SELECT EMPLOYEE.HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE > {0}";
using (FbConnection connection = new FbConnection(connectionString))
using (DataContext db = new DataContext(connection))
{
DateTime a = new DateTime(1990, 1, 2, 3, 4, 5);
List<employee> results = db.ExecuteQuery<employee>(query, a).ToList();
}
但后来我得到一个System.ArgumentOutOfRangeException:指定的参数超出了有效值的范围。
有人知道如何使用DateTime作为查询的参数吗?
答案 0 :(得分:0)
我没有找到问题的答案。我最后通过手动进行参数替换来解决这个问题。
string query = @"SELECT EMPLOYEE.HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE > ";
string query = query + "'" + hireDate.ToString("dd.MM.yyyy, HH.mm.ss.fff") + "'";
然后使用了ExecuteQuery的其他重载
List<employee> results = db.ExecuteQuery<employee>(query).ToList();
我仍然有兴趣让ExecuteQuery替换我。如果有人知道如何,请发一个答案。