既然OleDbParameter不使用命名参数(由于其性质),为什么.NET OleDbParameter类需要一个名称?(string parametername ...)
所有的构造器都需要一个参数名,而我从来不知道该给它取什么名;我的名字可以吗?还是我祖母的名字?
发布于 2008-12-23 18:16:32
尽管OleDb/Odbc提供程序使用位置参数而不是命名参数-
举个例子:
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应该类似于(或接近于我认为):
DECLARE @FieldValue INT;
SET @FieldValue = 42;
SELECT * FROM MyTable WHERE Field = @FieldValue建议您使用与正在操作的列的名称最匹配的参数名称。
发布于 2008-12-23 18:15:50
就像编程中的其他东西一样,给它命名一些对你的上下文有意义的东西!(名称、订单etc、城市等)。
在c#代码中,您可以使用名称来按名称访问参数集合:
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参数提取值时,这也很有用:
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);发布于 2008-12-23 18:49:26
有一些接口和工厂可以为数据访问提供一定程度的独立底层提供程序-- IDataParameter、DbParameter、DbProviderFactory等。
为了支持这一点,所有参数都可以命名,即使基础提供程序没有使用该名称。
https://stackoverflow.com/questions/389591
复制相似问题