C# 使用输出参数调用ASP.NET中的SQL存储过程
我试图调用我的sql存储过程,它将C# 使用输出参数调用ASP.NET中的SQL存储过程,c#,sql,asp.net,sql-server,stored-procedures,C#,Sql,Asp.net,Sql Server,Stored Procedures,我试图调用我的sql存储过程,它将RaceDate作为输入,并将Location作为输出返回。我不知道如何在ASP.NET中调用我的代码,这就是我目前所拥有的 DateTime RaceDate = Calendar1.SelectedDate; // string RaceDate = TxtBoxCalendar.Text; TxtBoxCalendar.ReadOnly = true; SqlConnection con = new SqlConnection(
RaceDate
作为输入,并将Location
作为输出返回。我不知道如何在ASP.NET中调用我的代码,这就是我目前所拥有的
DateTime RaceDate = Calendar1.SelectedDate;
// string RaceDate = TxtBoxCalendar.Text;
TxtBoxCalendar.ReadOnly = true;
SqlConnection con = new SqlConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ToString();
con.Open();
SqlCommand Command = new SqlCommand();
Command.CommandType = System.Data.CommandType.StoredProcedure;
Command.CommandText = "CheckRaceCalendarDates";
Command.Parameters.Add("@RaceDate", SqlDbType.DateTime, RaceDate);
Command.Parameters.Add("@Location", SqlDbType.String).Direction = ParameterDirection.Output;
Command.Parameters.Add("@Location",SqlDbType.String).Direction = ParameterDirection.Output;
Command.ExecuteNonQuery();
con.Close();
我想我也可能遇到数据类型的问题RaceDate
是用户在日历中单击的日期,必须转换为字符串,但是SQL参数RaceDate
是日期类型
CREATE PROCEDURE [dbo].[CheckRaceCalendarDates]
@RaceDates DATE,
@Location NVARCHAR(50) OUTPUT
AS
IF EXISTS
(
SELECT
RaceCalendar.RaceDates,
Locations.LocationName
FROM
Locations
INNER JOIN RaceCalendar ON locations.LocationId = RaceCalendar.LocationId
WHERE
RaceCalendar.RaceDates = @RaceDates
)
BEGIN
SELECT
@Location = Locations.LocationName
FROM
Locations
INNER JOIN RaceCalendar ON locations.LocationId = RaceCalendar.LocationId
WHERE
RaceCalendar.RaceDates = @RaceDates
END
关于使用参数名的问题;您已在存储过程中使用了
@RaceDate
,但尝试在代码中使用@RaceDate
。。它们应该是一样的
另外,您需要像这样向代码中添加第二个参数
Command.Parameters.Add("@Location",SqlDbType.String).Direction = ParameterDirection.Output;
在cmd.ExeCuteNonQuery()之后代码>
使用Add方法而不是AddWithValue,然后指定参数的方向。在不同的注释上,如果没有返回任何行,则@Location
的值将为NULL
,如果不运行查询,则会这样做。不需要使用IF
语句。为什么要将日期从选择器转换为字符串,然后再转换回SP的日期?获取数据类型错误:“无法从system.datetime转换为int”。DateTime RaceDate=Calendar1.SelectedDate;添加(“@RaceDates”,SqlDbType.DateTime,RaceDate);在哪里使用int类型?我看不见,在任何地方使用int代码,请仔细检查
string location = Command.Parameters["@Location"].Value.ToString();