按参数Firebird+排序;C#

按参数Firebird+排序;C#,c#,asp.net,sql-order-by,firebird,C#,Asp.net,Sql Order By,Firebird,我目前正在编写一个从firebird数据库读取日期的方法。 以下是标题: public static void ReadInfo(int first, int skip,string orderBy) 这是我的SQL查询: const string SQL = "SELECT FIRST @first SKIP @skip A.ID,B.SHORTNAME, A.DATETIME, A.COMPUTERNAME,A.OSLOGIN, A.DBLOGIN, A.INFOTYPE, A.INFO

我目前正在编写一个从firebird数据库读取日期的方法。 以下是标题:

 public static void ReadInfo(int first, int skip,string orderBy)
这是我的SQL查询:

const string SQL = "SELECT FIRST @first SKIP @skip A.ID,B.SHORTNAME, A.DATETIME, A.COMPUTERNAME,A.OSLOGIN, A.DBLOGIN, A.INFOTYPE, A.INFO FROM EVENTSGENERAL A JOIN EVENTSGENERATORS B ON B.GENERATOR_ = A.GENERATOR_ ORDER BY @orderBy";
这里是我为查询准备参数的地方:

cmd.Parameters.Add("@first", FbDbType.Integer).Value = first;
cmd.Parameters.Add("@skip", FbDbType.Integer).Value = skip;
cmd.Parameters.Add ("@orderBy", FbDbType.VarChar, 50).Value = orderBy;
问题是:前两个参数有效(first和skip准备正确),我已经测试过了。但是,orderBy参数在我尝试运行它时会引发一个exeption:

{"Dynamic SQL Error\r\nSQL error code = -804\r\nData type unknown"}
我曾尝试将FbDbType更改为“文本”,但仍然不起作用。 对不起,英语不好。
提前感谢您提供的任何帮助。

对于
订购人
条款需要指定字段,您不能传递字段名。如果将参数数据类型设置为整数并传递字段的索引,则可能会起作用。比如说

select id, name from city order by 1 //this will order by id field
或者,如果以编程方式编辑sql语句,如下所示:

string SQL = "SELECT FIRST @first SKIP @skip A.ID,B.SHORTNAME, A.DATETIME,
 A.COMPUTERNAME,A.OSLOGIN, A.DBLOGIN, A.INFOTYPE, A.INFO FROM EVENTSGENERAL A JOIN
 EVENTSGENERATORS B ON B.GENERATOR_ = A.GENERATOR_ ORDER BY {0}";
SQL = string.Format(SQL, orderBy);

对于
orderby
子句需要指定字段,您不能传递字段名。如果将参数数据类型设置为整数并传递字段的索引,则可能会起作用。比如说

select id, name from city order by 1 //this will order by id field
或者,如果以编程方式编辑sql语句,如下所示:

string SQL = "SELECT FIRST @first SKIP @skip A.ID,B.SHORTNAME, A.DATETIME,
 A.COMPUTERNAME,A.OSLOGIN, A.DBLOGIN, A.INFOTYPE, A.INFO FROM EVENTSGENERAL A JOIN
 EVENTSGENERATORS B ON B.GENERATOR_ = A.GENERATOR_ ORDER BY {0}";
SQL = string.Format(SQL, orderBy);

刚刚尝试:cmd.Parameters.Add(新的FbParameter(“@orderBy”,FbDbType.VarChar,50)).Value=orderBy;仍然不工作。只是尝试:cmd.Parameters.Add(新的FbParameter(“@orderBy”,FbDbType.VarChar,50))。Value=orderBy;仍然不起作用。