嘿,我创建了一个sign_up方法,使用proc'new_student'插入我的数据库'newSchool',但每当我在浏览器中尝试它时,在cmd.ExecuteNonQuery();
这是代码:
protected void sign_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("Data Source=MAX-PC\\SQLEXPRESS;Initial Catalog=newSchool;Integrated Security=True");
SqlCommand cmd = new SqlCommand("new_student", conn);
cmd.CommandText = "EXEC new_student @user , @name , @pass , @date , SELECT S.ID FROM Schools S where S.name = @school";
cmd.Parameters.AddWithValue("@user", suser.Text);
cmd.Parameters.AddWithValue("@name", sname.Text);
cmd.Parameters.AddWithValue("@pass", spass.Text);
cmd.Parameters.AddWithValue("@date", sdate.Text);
cmd.Parameters.AddWithValue("@school", sschool.SelectedValue);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
Response.Redirect("localhost:17009/Welcome%20page.aspx");
}
这是错误:
答案 0 :(得分:2)
首先,您需要在设置命令文本之前设置commandtype = CommandType.StoredProcedure
。然后在commandtext
中仅提供程序的名称。如需进一步澄清,请访问以下链接:
http://msdn.microsoft.com/en-us/library/yy6y35y8(v=vs.110).aspx
答案 1 :(得分:0)
cmd.CommandText = "EXEC new_student @user , @name , @pass , @date , SELECT S.ID FROM Schools S where S.name = @school";
这不是有效的SQL。如屏幕截图所示,关键字“SELECT”附近的语法不正确。不正确的语法以@date后面的逗号开头。您不能将不带引号的SELECT语句作为参数传递给存储过程。