Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OLEDB参数';名字迷恋_C#_.net_Oledbparameter - Fatal编程技术网

C# OLEDB参数';名字迷恋

C# OLEDB参数';名字迷恋,c#,.net,oledbparameter,C#,.net,Oledbparameter,由于OleDbParameter不使用命名参数(由于其性质), 为什么.NETOleDbParameter类需要一个名称(字符串参数名称…) 所有的构造函数都需要一个参数名,我不知道该给它取什么名字;我的名字可以吗?还是我祖母的名字?就像编程中的其他东西一样,给它命名一些对您的环境有意义的东西!(姓名、订单号、城市等) 在c#代码中,使用名称按名称访问参数集合: 在执行语句后使用OUT参数提取值时,这也很有用: OleDbParameter outParam = new OleDbParamet

由于
OleDbParameter
不使用命名参数(由于其性质), 为什么.NET
OleDbParameter
类需要一个名称<代码>(字符串参数名称…)


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

就像编程中的其他东西一样,给它命名一些对您的环境有意义的东西!(姓名、订单号、城市等)

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

在执行语句后使用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);

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

  • 如果需要引用这些参数,则需要在OleDbParameter集合中以某种方式标识这些参数

  • 重要的是,在构造参数化sql语句时,会为每个参数声明一个变量并为其分配相应的值。然后在执行的sql语句中使用

  • 例如:

    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类似于(或者我认为接近于):


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

    有一些接口和工厂为数据访问提供基础提供程序的独立性-IDataParameter、DbParameter、DbProviderFactory等


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

    注意:
    command.parameters[“name”].Value=“此处为您的姓名或祖母姓名”不是添加参数的有效方法,只能更改现有参数的值。我最初推断,如果不存在,它会将其添加到集合中。我从来没有说过这就是添加参数的方式,我说(在上面的评论中)先添加参数,然后使用方括号符号引用它们,这是合理的;我最初只是将它解释为与下面的行相关联,而不是与“…”相关联。这是我对未来读者的警告。不批评;只是澄清一下。
    
    string sql = "SELECT * FROM MyTable WHERE Field = ?";
    OleDbCommand cmd = new OleDbCommmand(sql, sqlConnection);
    cmd.Parameters.Add("@FieldValue", OleDbType.Int32, 42);
    OleDbDataReader dr = cmd.ExecuteReader();
    
    DECLARE @FieldValue INT;
    SET @FieldValue = 42;
    SELECT * FROM MyTable WHERE Field = @FieldValue