2013-10-28 83 views
0
ALTER PROCEDURE tableuser 
    -- Add the parameters for the stored procedure here 
    @userName varchar(50) 
AS 
IF EXISTS(SELECT 'True' FROM tbl_user WHERE userName = @userName) 
BEGIN 
    --This means it exists, return it to ASP and tell us 
    SELECT 'This record already exists!' 
END 
ELSE 
BEGIN 
    --This means the record isn't in there already, let's go ahead and add it 
    SELECT 'Record Added' 
    INSERT into tbl_user(userName) VALUES(@username) 
END 

這是我在SQL Server Management Studio代碼和下面的參數是C#代碼:表預期已經存在

protected void Button1_Click(object sender, EventArgs e) 
{ 
    SqlCommand cmd = new SqlCommand("tableuser", conn); 
    conn.Open(); 
    SqlParameter param = new SqlParameter(); 
    cmd.Parameters.AddWithValue("@userName", uname.Text); 
    param.Value = uname.Text; 

    cmd.Parameters.Add(param); 

    SqlDataReader reader = cmd.ExecuteReader(); 

    if (reader.HasRows) 
    { 
     Response.Write("Username exists"); 
    } 
    else 
    { 
     cmd.Parameters.AddWithValue("@userName", uname.Text); 
     cmd.CommandType = System.Data.CommandType.StoredProcedure; 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     Response.Write("Successfully saved...!!!"); 
     conn.Close(); 
    } 
} 

}

的錯誤出現是:過程或函數' tableuser'需要參數'@userName',它沒有提供。

+0

你的C#代碼非常混亂。它看起來像是檢查行是否存在,如果不存在但是你的存儲過程已經這樣做了,就添加它。我想你在開始時也加入了多個參數,其中一個帶有名字,另一個沒有。 – acfrancis

+0

我剛剛使用了數據庫的一列用戶名。你可以用C#的正確代碼指定我嗎? – user2920046

回答

0

這應該工作:

conn.Open(); 
var cmd = new SqlCommand("tableuser", conn); 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.AddWithValue("@userName", uname.Text); 

var rdr = cmd.ExecuteReader(); 

rdr.Read(); 
Response.Write(rdr.GetString(0)); 
conn.Close(); 
+0

Thankyou非常適合您的代碼,但我沒有得到的是當我輸入參數@userName爲什麼它仍然要求它嗎?它表示未提供參數'@userName'。爲什麼這樣?請幫助 – user2920046

+0

確定問題解決了!非常感謝... – user2920046

+0

如果您認爲正確,請不要忘記接受答案。 – acfrancis