【发布时间】:2023-04-11 09:27:02
【问题描述】:
您好,在连接数据库期间,我在连接数据库时遇到了一些错误 (System.ArgumentException)
使用 ADO.NET。
有一些复杂的参数设置
请检查下面的代码。
ObjectParameter objp = new ObjectParameter("30", typeof(String));
Model.TestEntities1 mda = new Model.TestEntities1();
var test = mda.GetUserNameByUserId(777, objp);
foreach (var test1 in test)
{
MessageBox.Show(this, test1.ToString(), "Alter", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
获取数据的点 mda.GetUserNameByUserId(777, objp);
实际上我想发送一个参数 777,但是 ADO.NET 自动生成了另外一个参数。
public ObjectResult<GetUserNameByUserId_Result> GetUserNameByUserId(Nullable<global::System.Int32> userId, ObjectParameter userName)
{
ObjectParameter userIdParameter;
if (userId.HasValue)
{
userIdParameter = new ObjectParameter("UserId", userId);
}
else
{
userIdParameter = new ObjectParameter("UserId", typeof(global::System.Int32));
}
return base.ExecuteFunction<GetUserNameByUserId_Result>("GetUserNameByUserId", userIdParameter, userName);
}
其实用户名是我现在不需要发送的输出。
无论如何我都会尝试发送一些临时参数
并且有一个错误。
System.ArgumentExceptiojn:指定的参数名称“30”无效。参数名称必须以字母开头,并且只能包含字母、数字和下划线。
任何人都知道这个问题。
谢谢。
【问题讨论】:
-
其实我的目的只是一个参数,但是当我生成存储过程系统时自动生成了两个参数作为第二个代码,所以我只是尝试放任何数据。
-
第二个参数“UserName”在存储过程中实际设置输出 ALTER PROCEDURE [dbo].[GetUserNameByUserId] -- 在此处添加存储过程的参数 UserId int, UserName varchar(100) output AS跨度>
-
尽管它是输出,但当我尝试调用存储过程时,系统读取了两个参数。所以我不确定如何在存储过程模型浏览器中删除
-
听起来你有一些东西 bass ackwards 并且它正在做 Set 30 = 'Fred'..
-
好的,我得到了与存储过程参数设置不匹配的东西。我更改了存储过程并且工作正常。谢谢大家。
标签: c# sql-server parameters ado.net argumentexception