参数化查询中的(?,?...?)或(@ field1,@ field2 ... @ fieldn)?

时间:2017-05-09 08:34:00

标签: c# sql parameters odbc paradox

这是不好的编码?

我有一个查询

INSERT INTO sometable (field1,field2...fieldn) VALUES (?,?,.....?)

然后

cmd.Parameters.Add("TOFnr", OdbcType.Int, 10).Value = orderId;
cmd.Parameters.Add("LineNr", OdbcType.Int, 10).Value = maxLineNr;
cmd.Parameters.Add("Date", OdbcType.VarChar, 8).Value = rowHeader["Date"];

代码有效,除了在Add周围有一个if条件,导致该行之后的数据进入错误的变量。

占位符(" TOFnr"等)仅用于程序员参考,不是由sql或c#本身使用,对吧?

在查询中使用命名参数不易出错吗?

INSERT INTO sometable (field1,field2...fieldn) VALUES (@TOFnr,@LineNr,.....@fieldn)

在odbc上连接到borland paradox是c#。

1 个答案:

答案 0 :(得分:1)

  

在查询中使用命名参数不是很容易出错吗?

是的,确实如此。不幸的是,ADO.NET ODBC驱动程序不允许在SQL语句中传递命名的SQL参数,所以不幸的是,使用ODBC驱动程序是不可能的。

我不是Paradox的专家,但可能有专门针对Paradox的驱动程序,它允许命名参数。你可能会有更多的运气。