首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OleDbParameter的名称困扰

OleDbParameter的名称困扰
EN

Stack Overflow用户
提问于 2008-12-23 17:55:10
回答 3查看 4K关注 0票数 3

既然OleDbParameter不使用命名参数(由于其性质),为什么.NET OleDbParameter类需要一个名称?(string parametername ...)

所有的构造器都需要一个参数名,而我从来不知道该给它取什么名;我的名字可以吗?还是我祖母的名字?

EN

回答 3

Stack Overflow用户

发布于 2008-12-23 18:16:32

尽管OleDb/Odbc提供程序使用位置参数而不是命名参数-

  1. 如果您需要引用参数,则需要在OleDbParameter集合中以某种方式标识它们。
  2. 重要的是,当构造参数化的sql语句时,将为每个参数声明一个变量,并为其分配相应的值。然后在执行的sql语句中使用。

举个例子:

代码语言:javascript
复制
string sql = "SELECT * FROM MyTable WHERE Field = ?";
OleDbCommand cmd = new OleDbCommmand(sql, sqlConnection);
cmd.Parameters.Add("@FieldValue", OleDbType.Int32, 42);
OleDbDataReader dr = cmd.ExecuteReader();

执行的SQL应该类似于(或接近于我认为):

代码语言:javascript
复制
DECLARE @FieldValue INT;
SET @FieldValue = 42;
SELECT * FROM MyTable WHERE Field = @FieldValue

建议您使用与正在操作的列的名称最匹配的参数名称。

票数 3
EN

Stack Overflow用户

发布于 2008-12-23 18:15:50

就像编程中的其他东西一样,给它命名一些对你的上下文有意义的东西!(名称、订单etc、城市等)。

在c#代码中,您可以使用名称来按名称访问参数集合:

代码语言:javascript
复制
OleDbCommand command = new OleDbCommand();
...//Add your parameters with names, then reference them later if you need to:
command.Parameters["name"].Value = "your name or your grandmothers name here";

当您在执行语句后使用OUT参数提取值时,这也很有用:

代码语言:javascript
复制
OleDbParameter outParam = new OleDbParameter();
outParam.Direction = ParameterDirection.Output;
outParam.DbType = DbType.Date;
outParam.ParameterName = "outParam";
command.Parameters.Add(outParam);
command.ExecuteNonQuery();
DateTime outParam = Convert.ToDateTime(command.Parameters["outParam"].Value);
票数 1
EN

Stack Overflow用户

发布于 2008-12-23 18:49:26

有一些接口和工厂可以为数据访问提供一定程度的独立底层提供程序-- IDataParameter、DbParameter、DbProviderFactory等。

为了支持这一点,所有参数都可以命名,即使基础提供程序没有使用该名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/389591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档