cmd.ExecuteNonQuery()没有响应,没有返回值

使用环境  VS2019    .net core 3.1

今天搞访问数据库的时候发现代码执行到cmd.ExecuteNonQuery()的时候就没有再继续执行了,也没有返回值。

        /// <summary>                
        /// 用提供的参数,在连接字符串所指定的数据库中执行SQL语句(非查询)
        /// </summary>
        /// <remarks>
        /// 使用示例: 
        ///  int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
        /// </remarks>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="commandType">命令类型(存储过程、文本等)</param>
        /// <param name="commandText">存储过程名或T-SQL语句</param>
        /// <param name="commandParameters">用于执行命令的参数数组</param>
        /// <returns>受命令所影响的行数</returns>
        public static int ExecuteNonQuery(CommandType commandType, string commandText, params SqlParameter[] commandParameters)
        {
            SqlCommand cmd = new SqlCommand();
            using (SqlConnection conn = SingletonConnectionFactory.GetConnection())
            {
                PrepareCommand(cmd, conn, null, commandType, commandText, commandParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }
        }

 但是在sql profiler工具中,可以看到这条sql

我将这段sql取出来执行以下就报错了。。。。。提示我没有提供InvitationID的参数

最后发现是InvitationID在赋值的时候传的是null,但是我在创建表的时候给的默认值是'',随后我看了一下数据库中这个字段的默认值,发现并没有被设置,看样子''是不被认可的。

最后我将InvitationID赋值的时候改成string.Empty,这样生成的sql就是N'',这样就不会这些这些问题了。

public int BindCompanyUser(string Openid, string InvitationID, string OrgCode, string CompanyName)
        {
            string sql = @"INSERT INTO [T_WechatUserInformation]
           ([Openid]
           ,[InvitationID]
            ,[CompanyName]
           ,[OrgCode]
           ,[CreateDate])
     VALUES
           (@Openid
           ,@InvitationID
           ,@CompanyName
           ,@OrgCode
           ,GETDATE())";
            SqlParameter[] sqlParameters = {
                new SqlParameter("@Openid", Openid),
                new SqlParameter("@InvitationID", string.IsNullOrEmpty(InvitationID)?string.Empty:InvitationID),
                new SqlParameter("@CompanyName", CompanyName),
                new SqlParameter("@OrgCode", OrgCode)
            };
            int result = SqlHelper.ExecuteNonQuery(CommandType.Text, sql, sqlParameters);
            return result;
        }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值