Sql Server 에 데이터를 데이터베이스에 저장 프로시저 호출을 통해 실로나는 삽입하려면 하고, but I am getting 오류
>. # 39, & # 39, SHOWuser& 절차 또는 함수 # 39, & # 39, 기대하고 있는 매개변수입니다 @userID& 제공하지 않았습니다.
내 저장 프로시저 호출됨 '쇼우저'. 나는 철저히 점검됩니다 없고 매개변수입니다 누락되었습니다.
내 코드:
public void SHOWuser(string userName, string password, string emailAddress, List<int> preferences)
{
SqlConnection dbcon = new SqlConnection(conn);
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = dbcon;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "SHOWuser";
cmd.Parameters.AddWithValue("@userName", userName);
cmd.Parameters.AddWithValue("@password", password);
cmd.Parameters.AddWithValue("@emailAddress", emailAddress);
dbcon.Open();
int i = Convert.ToInt32(cmd.ExecuteScalar());
cmd.Parameters.Clear();
cmd.CommandText = "tbl_pref";
foreach (int preference in preferences)
{
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@userID", Convert.ToInt32(i));
cmd.Parameters.AddWithValue("@preferenceID", Convert.ToInt32(preference));
cmd.ExecuteNonQuery();
}
}
catch (Exception)
{
throw;
}
finally
{
dbcon.Close();
}
및 저장 프로시저 입니다.
ALTER PROCEDURE [dbo].[SHOWuser]
(
@userName varchar(50),
@password nvarchar(50),
@emailAddress nvarchar(50)
)
AS
BEGIN
INSERT INTO tbl_user(userName, password, emailAddress)
VALUES (@userName, @password, @emailAddress)
SELECT
tbl_user.userID, tbl_user.userName,
tbl_user.password, tbl_user.emailAddress,
STUFF((SELECT ',' + preferenceName
FROM tbl_pref_master
INNER JOIN tbl_preferences ON tbl_pref_master.preferenceID = tbl_preferences.preferenceID
WHERE tbl_preferences.userID = tbl_user.userID
FOR XML PATH ('')), 1, 1, ' ' ) AS Preferences
FROM
tbl_user
SELECT SCOPE_IDENTITY();
END
이것은 두 번째 저장 프로시저 'tbl_pref' 에서 사용되는 동일한 기능을:
ALTER PROCEDURE [dbo].[tbl_pref]
@userID int,
@preferenceID int
AS
BEGIN
INSERT INTO tbl_preferences(userID, preferenceID)
VALUES (@userID, @preferenceID)
END
내 경우 모든 매개 변수 값을 제대로 공급 유형 I 이 명령을 받은 경우에도 예외가 있었다 하지만 지정되지 않았습니다.
cmd.CommandType = System.Data.CommandType.StoredProcedure;
이것은 분명히 아닌 경우도 있지만, 이 경우에는 위의 질문에 idfsysobject. 설명이 별로 없는, 그래서 선택해제합니다 지정하도록 했다.
어제 여기 왔는지 있지만 아무도 이 문제에 대해 한 점, 그러나, 그들은 이 솔루션이 협력했습니다 정확히요 내게 맞는 방향이다.
우리 워크플로입니다 도구에서는 C # 과 여러 개의 언어로 작성된 응용 프로그램, 지나치게 간편화된 뿐만 아니라, 각 테이블에 대한 메타 데이터 저장 프로시저 데이터베이스에서 사용하는 매개변수입니다 각 저장 프로시저 (이름, 주문, 데이터 형식, 크기 등) 로 만들 수 있게 되어, 여러 가지 새로운 저장 프로시저, 우리가 원하는 대로 변경할 필요 없이 C #.
문제에 대한 우리의 모든 코드는 올바른 매개 변수를 설정하는 것으로 분석 '에서' 객체에는 스크라코먼드 하지만, 이 같은 오류가 잡을라는데 OP 를 던진 후 처형되었다.
일부 매개변수입니다 분석이 더 값이 'null' 한 것으로 드러났다. 그러므로 내가 그어야 할 스크라코먼드 무시하고 '' 그 '' '객체에는 결론을 스크루파람터 객체에는 자파르임터스 값을 갖는' 수집 'null'.
나는 두 가지 방법을 통해 이 문제를 해결할 수 있는 것으로 나타났다.
그래서 각 매개변수에서 lionbridge 의 저장 프로시저, give a int '을' 에서 '@Parameter 기본값입니다 @Parameter int = NULL' (또는 다른 기본값입니다 필요한 경우).
개별 객체를 생성하는 코드 '의', '대신' 데브 울드발루 스크루파람터 할당 'null' 는 여기서 원하는 값을 SQL 'NULL' 높여줍니까 트릭.
당초 코드와 함께 솔루션 기반 부호화) 는 본래 기록되었으므로 염두에 두고 이동하지 구매와 몸무게 1 위로 i& # 39 의 장점을 모두 생각한다, ll 치중한다는 해결 방법 1. # 39 의 it& 훨씬 쉽습니다 지정하십시오라는 특정 저장 프로시저 쓸 때 항상 기본값입니다 이 아닌 'NULL' 에 정의된 코드를 있다.
누군가 도움이 되길 바란다.
네 5 매개변수입니다 입력으로 저장 프로시저 있을 것으로 보고 있다.
@userID int,
@userName varchar(50),
@password nvarchar(50),
@emailAddress nvarchar(50),
@preferenceName varchar(20)
그래서 이 SP 호출하십시오 5 매개변수입니다 모두 추가 합니다.
cmd.CommandText = "SHOWuser";
cmd.Parameters.AddWithValue("@userID",userID);
cmd.Parameters.AddWithValue("@userName", userName);
cmd.Parameters.AddWithValue("@password", password);
cmd.Parameters.AddWithValue("@emailAddress", emailAddress);
cmd.Parameters.AddWithValue("@preferenceName", preferences);
dbcon.Open();
PS: # 39, s not what these 매개변수입니다 it& 선택해제합니다 위한 것입니다. # 39 에 따라서, SP, SP 바디입니다 don& 있습니다 t 이러한 매개변수를 사용하여 /dev/raw/raw200 같습니다.
ALTER PROCEDURE [dbo].[SHOWuser] AS BEGIN ..... END