Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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# 具有2个参数的存储过程_C#_Sql_Sql Server_Vb.net_Stored Procedures - Fatal编程技术网

C# 具有2个参数的存储过程

C# 具有2个参数的存储过程,c#,sql,sql-server,vb.net,stored-procedures,C#,Sql,Sql Server,Vb.net,Stored Procedures,我有一个存储过程,它接受3个参数:我们将它们分别称为@a、@b、@c,所有这些参数都是可选的 在存储过程中,它们的定义顺序如下:@a、@b、@c 根据我到目前为止的研究,从.NET代码中,我应该能够以任意顺序调用这些: 例如: .Add(New OleDbParameter("@c", OleDbType.Integer, 4, ParameterDirection.Input, False, 0, 0, "c", DataRowVersion.Current, c)) .Add(New Ol

我有一个存储过程,它接受3个参数:我们将它们分别称为
@a、@b、@c
,所有这些参数都是可选的

在存储过程中,它们的定义顺序如下:
@a、@b、@c

根据我到目前为止的研究,从.NET代码中,我应该能够以任意顺序调用这些:

例如:

.Add(New OleDbParameter("@c", OleDbType.Integer, 4, ParameterDirection.Input, False, 0, 0, "c", DataRowVersion.Current, c))

.Add(New OleDbParameter("@a", OleDbType.Integer, 4, ParameterDirection.Input, False, 0, 0, "a", DataRowVersion.Current, a))
但当我这样做时,存储过程仍然认为传递的第一个值是a,第二个值是c


这里怎么了

OleDB不支持命名参数:

OleDB不支持命名参数:

因此,如果您希望以任何顺序使用参数,则需要切换到比OleDB更新的数据访问技术,但如果您仍使用OleDB,则需要确保顺序正确


我认为普雷斯顿的答案足够了,但我已经发布了这个答案。如果您觉得它更有用,那么就接受它。

因此,如果您想以任何顺序使用参数,那么您需要切换到比OleDb更新的数据访问技术,但是如果您仍然使用OleDb,那么您需要确保顺序正确


我认为普雷斯顿的答案足够了,但我已经发布了这个答案。如果您觉得它更有帮助,请接受它。

您使用的是SQL Server还是其他RDBMS?问题被标记为
sql server
,但我感到困惑,因为我看到您正在使用
OleDbParameter
对象。如果您使用的是SQL Server,那么您应该使用优化的
SqlParameter
对象。是的,这是使用旧技术OLe DBSo的旧代码。如果您想以任何顺序使用这些参数,那么您需要切换到比
OleDb
更新的数据访问技术,但是如果您一直使用
OleDb
,则,那么你需要确保顺序正确。@KarlAnderson,我想知道你为什么不把这个作为答案。你是在使用SQL Server还是其他RDBMS?问题被标记为
sql server
,但我感到困惑,因为我看到您正在使用
OleDbParameter
对象。如果您使用的是SQL Server,那么您应该使用优化的
SqlParameter
对象。是的,这是使用旧技术OLe DBSo的旧代码。如果您想以任何顺序使用这些参数,那么您需要切换到比
OleDb
更新的数据访问技术,但是如果您一直使用
OleDb
,则,然后你需要确保顺序正确。@KarlAnderson,我想知道你为什么不把这个作为答案。改用
System.Data.SqlClient
命名空间对象(
SqlConnection
SqlCommand
SqlParameter
)。OleDB是垃圾。
OleDB
是20世纪90年代中期,而
ADO.NET
是2002年的最新版本。是的,我目前的公司仍然坚持使用过时的垃圾代码。请改用
System.Data.SqlClient
命名空间对象(
SqlConnection
SqlCommand
SqlParameter
)。OleDB是垃圾。
OleDB
是20世纪90年代中期,而
ADO.NET
是2002年的最新版本。是的,我现在的公司仍然坚持使用过时的垃圾代码。