为了账号安全,请及时绑定邮箱和手机立即绑定

使用存储过程更新 C# 中的列

使用存储过程更新 C# 中的列

C#
翻过高山走不出你 2021-11-14 16:02:35
我试图通过填写文本框并单击保存来更新表中的列;我没有收到错误或任何东西。只是什么都没发生!这是我的存储过程:ALTER PROCEDURE [dbo].[sp_UpdateProj]    @ORAID INT = NULL,    @FullTitle NVARCHAR(250) = NULLASBEGIN    UPDATE tbl_ProjectFile    SET FullTitle = @FullTitle    WHERE ORAID = @ORAIDEND当我在 SQL Server Management Studio 中运行它时,它可以工作,给出一个 ID 和标题名称这是我的 C# 代码protected void Button_Save_Click(object sender, EventArgs e){    string connectionStr = ConfigurationManager.ConnectionStrings["ORAProjectConnectionString"].ConnectionString;    using (SqlConnection con = new SqlConnection(connectionStr))    {        con.Open();        string query = "sp_UpdateProj Where ORAID=" + int.Parse(TextBox_ORAID.Text);        SqlCommand cmd = new SqlCommand(query, con);        cmd.CommandType = CommandType.StoredProcedure;        cmd.Connection = con;        cmd.Parameters.AddWithValue("@ORAID", Convert.ToInt32(TextBox_ORAID.Text));        cmd.Parameters.AddWithValue("@FullTitle", TextBox_FullTitle.Text);        con.Close();    }}
查看完整描述

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();

    }

}


查看完整回答
反对 回复 2021-11-14
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

Button_Save_Click事件处理程序中有一些错误:

  1. 当您使用commandTypeis 时,StoredProcedure您只需传递存储过程名称

  2. 使用带有sp_前缀的存储过程创建性能问题(在 SQL Server 中使用 sp_ 作为用户存储过程的前缀导致性能影响

  3. 你忘了调用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();

 }

}


查看完整回答
反对 回复 2021-11-14
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

您的查询行应该是:

string query = "sp_UpdateProj";

您已经将参数作为其下方的对象。

然后加

cmd.ExecuteNonQuery();

执行


查看完整回答
反对 回复 2021-11-14
  • 3 回答
  • 0 关注
  • 193 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信