【问题标题】:ExecuteNonQuery not working but the ExecuteReader is workingExecuteNonQuery 不工作,但 ExecuteReader 工作
【发布时间】:2015-01-09 09:39:25
【问题描述】:

首先不要将其标记为重复,因为这样

ExecutenonQuery not working

ExecutenonQuery not working

ExecuteNonQuery not working in C#

不是我正在寻找的解决方案,语法正确,连接也正确,因为SqlDataReader 正在工作,我打开连接并在SqlCommand 中调用它。这是我的代码

            if (sql_con.State == ConnectionState.Closed)
            {
                sql_con.Open();
            }
            StringBuilder query = new StringBuilder();

            query.Append(String.Format("update tbl_userdata set stage=@stage where username=@name"));

            SqlCommand sql_command2 = new SqlCommand(query.ToString(), sql_con);
            sql_command2.Parameters.AddWithValue("@stage", stage);
            sql_command2.Parameters.AddWithValue("@name", lblName.Text.ToLower());
            sql_command2.ExecuteNonQuery();

调试后我的查询是update tbl_userdata set stage=@stage where username=@name

我不知道这里出了什么问题,我删除了where clause 以查看是否是问题的原因,但仍然出错。我不知道这里出了什么问题

这是我的连接

SqlConnection sql_con = new SqlConnection(Properties.Settings.Default.dbCon);

对不起,我忘了把我的错误,错误是舞台没有更新, 这是我的桌子

tbl_userdata
+--------+-------+-------+
|Username|stage  | coins |
+--------+-------+-------+


Username = nvarchar(5), stage = smallint, coins = smallmoney

【问题讨论】:

  • 究竟是什么错误?你的列类型是什么,你的参数值是什么?您的更新查询是否适用于您的 sql 服务器?你调试过你的代码吗?当您向查询添加参数值时,您的查询是什么样的?
  • 您使用过 SQL 分析器吗?命令真的发送到服务器了吗?
  • 不要为ExecuteNonQuery 假设一些奇怪的行为(没有任何行为)检查您的值和可能的异常。这两个函数之间的唯一区别是,一个返回第一个可用的结果值,而第二个在执行完成后不做任何事情
  • 另一种可能是事务在代码的另一部分打开但从未提交
  • 尝试使用您提供的参数在 sql server 中运行 sanme 查询以验证更新查询。其次尝试从 sql profiler 获取 sp 调用以验证查询。我不认为执行非查询是一个问题。

标签: c# sql visual-studio-2010


【解决方案1】:

您不需要作为字符串生成器并在查询中追加,如果值对 where 子句很好,则只需使用字符串,我的回答可能很愚蠢,但如果您找不到任何解决方案,则值得一试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2021-11-28
    相关资源
    最近更新 更多