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;
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章