【问题标题】:OleDb paramater syntaxOleDb 参数语法
【发布时间】:2019-05-15 10:06:17
【问题描述】:

向 OLEDB 命令添加参数时,是否需要使用“new”。以下两项工作。是更可取还是他们在做同样的事情?

command.Parameters.Add(new OleDbParameter("name", OleDbType.VarChar)); 
command.Parameters.Add("name", OleDbType.VarChar);

【问题讨论】:

  • 这两种方法的工作方式没有区别。它是为了方便您使用。如果您有创建参数的单独方法,则使用第一种方法,否则使用第二种方法
  • 可以看源码:referencesource.microsoft.com/#System.Data/fx/src/data/System/…注意方法是如何返回刚刚创建的参数的。这允许这种语法 command.Parameters.Add("name", OleDbType.VarChar).Value = "YourValue";
  • @Steve Im 为该网站添加书签,好评

标签: c# asp.net ms-access parameters


【解决方案1】:

是的,Add(string, OleDbType) 重载调用 Add(OleDbParameter) 重载。这意味着他们在后台做同样的事情。

public OleDbParameter Add(string parameterName, OleDbType oleDbType)
{
     return Add(new OleDbParameter(parameterName, oleDbType));
}

https://referencesource.microsoft.com/#System.Data/fx/src/data/System/Data/OleDb/OleDbParameterCollection.cs,78

正如史蒂夫评论的那样,最常见的使用方式(据我所知)喜欢;

command.Parameters.Add("name", OleDbType.VarChar).Value = "YourValue";

或者如果您知道(指定)您的数据库列大小(假设它是varchar(10)),您可以添加一个整数作为第三个参数,例如调用Add(parameterName, oleDbType, size) overload

command.Parameters.Add("name", OleDbType.VarChar, 10).Value = "YourValue";

【讨论】:

  • 谢谢,我要添加多行,所以我的意图是声明参数,然后在后续循环中使用 command.Parameters["name"].Value = "value" 添加值。我仍然不确定在这种情况下哪个更可取。
  • @Bobney 您可以为此使用Parameters.AddRange 方法,因为此方法将new OleDbParameter[] 作为参数。
  • @SonerGönül 您的最后一条评论确实误解了 OP 的意图。要重用参数,他/她应该var parameter = command.Parameters.Add("name", OleDbType.VarChar); 并在循环内parameter.Value = "whatever";
  • @bradbury9 哦,那好吧。但在这种情况下,参数名称、参数值和 OleDbType 应该存在于要迭代的对象的结构中。
  • 谢谢,但所有 3 种方法(现在包括 var parameter = command.Parameters.Add("name", OleDbType.VarChar);)似乎都有效。只是为了方便吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 2012-08-16
  • 1970-01-01
相关资源
最近更新 更多