3 回答
TA贡献1796条经验 获得超10个赞
您(几乎)正确设置了所有内容 - 但您实际上从未执行过存储过程!
试试这个代码:
protected void Button_Save_Click(object sender, EventArgs e)
{
string connectionStr = ConfigurationManager.ConnectionStrings["ORAProjectConnectionString"].ConnectionString;
// the query string should be **ONLY** the stored procedure name - nothing else!
string query = "dbo.sp_UpdateProj";
// you should put **both** SqlConnection and SqlCommand in "using" blocks
using (SqlConnection con = new SqlConnection(connectionStr))
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.CommandType = CommandType.StoredProcedure;
// fill the parameters - avoiding "AddWithValue"
cmd.Parameters.Add("@ORAID", SqlDbType.Int).Value = Convert.ToInt32(TextBox_ORAID.Text);
cmd.Parameters.Add("@FullTitle", SqlDbType.NVarChar, 250).Value = TextBox_FullTitle.Text;
con.Open();
// you need to **EXECUTE** the command !
cmd.ExecuteNonQuery();
con.Close();
}
}
TA贡献1848条经验 获得超10个赞
Button_Save_Click
事件处理程序中有一些错误:
当您使用
commandType
is 时,StoredProcedure
您只需传递存储过程名称使用带有
sp_
前缀的存储过程创建性能问题(在 SQL Server 中使用 sp_ 作为用户存储过程的前缀导致性能影响)你忘了调用
ExecuteNonQuery
方法
试试这个代码:
protected void Button_Save_Click(object sender, EventArgs e)
{
string connectionStr = ConfigurationManager.ConnectionStrings["ORAProjectConnectionString"].ConnectionString;
string procedureName = "dbo.UpdateProj";
using (SqlConnection con = new SqlConnection(connectionStr))
using(SqlCommand cmd = new SqlCommand(procedureName , con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ORAID", Convert.ToInt32(TextBox_ORAID.Text));
cmd.Parameters.AddWithValue("@FullTitle", TextBox_FullTitle.Text);
con.Open();
cmd.ExecuteNonQuery()
con.Close();
}
}
TA贡献1796条经验 获得超4个赞
您的查询行应该是:
string query = "sp_UpdateProj";
您已经将参数作为其下方的对象。
然后加
cmd.ExecuteNonQuery();
执行
- 3 回答
- 0 关注
- 193 浏览
添加回答
举报