OleDb 参数语法
Posted
技术标签:
【中文标题】OleDb 参数语法【英文标题】:OleDb paramater syntax 【发布时间】: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 为该网站添加书签,好评 【参考方案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);
)似乎都有效。只是为了方便吗?以上是关于OleDb 参数语法的主要内容,如果未能解决你的问题,请参考以下文章