c# 声明存储过程参数在代码中时是预期的
c# states stored procedure parameter is expected when its in the code
我一直收到这个异常,但我不知道为什么
Procedure or function 'InsertNewUser' expects parameter '@Username', which was not supplied
有什么想法吗?
try
{
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "InsertNewUser";
cmd.Parameters.Add(parameterName: "@Username", sqlDbType: SqlDbType.VarChar).Value = UsernameTextBox.Text.ToString();
cmd.Parameters.Add(parameterName: "@Email", sqlDbType: SqlDbType.VarChar).Value = EmailTextBox.Text.ToString();
cmd.Parameters.Add(parameterName: "@Password", sqlDbType: SqlDbType.VarChar).Value = PasswordTextBox.Text.ToString();
cmd.Parameters.Add(parameterName: "@FirstName", sqlDbType: SqlDbType.VarChar).Value = FirstNameTextBox.Text.ToString();
cmd.Parameters.Add("@SecondName", SqlDbType.VarChar).Value = SecondNameTextbox.Text.ToString();
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Registration Successful");
}
catch(Exception ex)
{
MessageBox.Show("Registration Failed");
}
在您的代码中添加以下行...
您正在提供存储过程名称并传递参数但没有告诉它,它是一个存储过程而不是文本查询。
cmd.CommandType = CommandType.StoredProcedure;
这会起作用:
try
{
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "InsertNewUser";
cmd.CommandType = CommandType.StoredProcedure; //<--- Specify your command type
cmd.Parameters.AddWithValue("@Username", UsernameTextBox.Text);
cmd.Parameters.AddWithValue("@Email", EmailTextBox.Text);
cmd.Parameters.AddWithValue("@Password", PasswordTextBox.Text);
cmd.Parameters.AddWithValue("@FirstName", FirstNameTextBox.Text);
cmd.Parameters.AddWithValue("@SecondName", SecondNameTextbox.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Registration Successful");
}
catch(Exception ex)
{
MessageBox.Show("Registration Failed");
}
我一直收到这个异常,但我不知道为什么
Procedure or function 'InsertNewUser' expects parameter '@Username', which was not supplied
有什么想法吗?
try
{
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "InsertNewUser";
cmd.Parameters.Add(parameterName: "@Username", sqlDbType: SqlDbType.VarChar).Value = UsernameTextBox.Text.ToString();
cmd.Parameters.Add(parameterName: "@Email", sqlDbType: SqlDbType.VarChar).Value = EmailTextBox.Text.ToString();
cmd.Parameters.Add(parameterName: "@Password", sqlDbType: SqlDbType.VarChar).Value = PasswordTextBox.Text.ToString();
cmd.Parameters.Add(parameterName: "@FirstName", sqlDbType: SqlDbType.VarChar).Value = FirstNameTextBox.Text.ToString();
cmd.Parameters.Add("@SecondName", SqlDbType.VarChar).Value = SecondNameTextbox.Text.ToString();
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Registration Successful");
}
catch(Exception ex)
{
MessageBox.Show("Registration Failed");
}
在您的代码中添加以下行...
您正在提供存储过程名称并传递参数但没有告诉它,它是一个存储过程而不是文本查询。
cmd.CommandType = CommandType.StoredProcedure;
这会起作用:
try
{
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "InsertNewUser";
cmd.CommandType = CommandType.StoredProcedure; //<--- Specify your command type
cmd.Parameters.AddWithValue("@Username", UsernameTextBox.Text);
cmd.Parameters.AddWithValue("@Email", EmailTextBox.Text);
cmd.Parameters.AddWithValue("@Password", PasswordTextBox.Text);
cmd.Parameters.AddWithValue("@FirstName", FirstNameTextBox.Text);
cmd.Parameters.AddWithValue("@SecondName", SecondNameTextbox.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Registration Successful");
}
catch(Exception ex)
{
MessageBox.Show("Registration Failed");
}