存储过程更新语句不起作用

时间:2013-09-05 19:31:51

标签: c# asp.net stored-procedures

再次返回另一个存储过程问题,我想进行1次单击提交然后使用ASP.Net进行更新,但似乎对我不起作用..

这是我班级的代码

public void assignofclass(string course, string id)
{
        myCon.Open();
        SqlCommand saveCmd = new SqlCommand("assignclass", myCon);
        saveCmd.CommandType = CommandType.StoredProcedure;
        saveCmd.Parameters.Add("@userid", SqlDbType.NChar).Value = id;
        saveCmd.Parameters.Add("@course", SqlDbType.NChar).Value = course;
        saveCmd.ExecuteNonQuery();
        myCon.Close();
}

代码隐藏:

using ClassLibrary1;
Class1 cs = new Class1();
protected void Button1_Click(object sender, EventArgs e)
    {
        cs.assignofclass(TextBox1.Text, DropDownList1.SelectedValue);
        Response.Write("<script> alert('" + TextBox1.Text + DropDownList1.SelectedValue + "')</script>");
         //just to make sure the textbox1 and dropdownlist1 is not giving a null value
    }

最后,存储过程

ALTER PROCEDURE dbo.assignclass
@userid nchar(10),
@course nchar(10)
AS
Update users Set 
course = @course
Where userid = @userid
RETURN

这里似乎有什么问题?我似乎无法更新我的表,顺便说一下这是表

表名:用户

userid  nchar(10)
firstname   nchar(20)
middlename  nchar(20)
lastname    nchar(20)
course  nchar(10)
usertype    nchar(10)
apassword   nchar(20)
grade   decimal(18, 2)

myCon声明:

namespace ClassLibrary1
{
public class Class1
{
    public static string ConStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=........
    SqlConnection myCon = new SqlConnection(ConStr);

那里的某个地方,我的班级将在此代码之后的某个地方

1 个答案:

答案 0 :(得分:0)

您在代码中添加的参数类型不同于存储过程中的参数。

最后我明白了,问题在于:

cs.assignofclass(TextBox1.Text, DropDownList1.SelectedValue);

public void assignofclass(string id, string course)

起初,代码是

public void assignofclass(string course, string id)

其中Textbox1.Text = useridDropDownList1.SelectedValue = course

愚蠢的我,从现在开始,我将把所有物品重新命名为特定用途。这是我今天学到的教训。谢谢大家的帮助。