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 参数语法的主要内容,如果未能解决你的问题,请参考以下文章

使用 OleDb 插入访问时出现语法错误

插入语句 C# OleDb 中的语法错误

System.Data.OleDb.OleDbException: 'UPDATE 语句中的语法错误。 '

如何解决 OleDb 错误“FROM 子句中的语法错误”?

C# - From 子句中的 OleDB 语法错误

使用此 INSERT INTO 语句和 .NET OleDb 命名空间时如何解决语法错误?