VS2017一步一步斷點調試解決Dapper語句出現的Bug


最近再做一個項目,出現一個小bug,bug雖小,但是卻要命啊。下面我show下我解決問題的方法。

View層代碼:

@model List<mhq.Blog.Model.Blog>

<blockquote class="layui-elem-quote">文章管理</blockquote>
<div style="padding:10px;">
    <div>
        <a class="layui-btn" href="~/Admin/Blog/Add">
            <i class="layui-icon">&#xe61f;</i> 添加
        </a>
    </div>

    <table class="layui-table">
        <thead>
            <tr>
                <th>發布時間</th>
                <th>boke標題</th>
                <th>所屬分類</th>
                <th>訪問量</th>
                <th>排序號</th>
                <th>管理</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var blog in Model)
            {
            <tr>
                <td>@blog.createdate.ToString("yyyy-MM-dd HH:mm")</td>
                <td>@blog.title</td>
                <td>@blog.caname</td>
                <td>@blog.visitnum</td>
                <td>@blog.sort</td>
                <td>
                    <a style="margin-right:20px" href="~/Admin/Blog/Add/@blog.id">
                        <i class="layui-icon">&#xe642;</i>
                        編輯
                    </a>
                    <a href="javascript:void()0;" onclick="del(@blog.id)">
                        <i class="layui-icon">&#xe640;</i>
                        刪除
                    </a>
                </td>
            </tr>
            }
        </tbody>

    </table>
</div>

<script>
    /* 刪除*/
    function del(id) {
        layui.use('layer', function () {
            var layer = layui.layer;
            var $ = layui.jquery;
            layer.confirm("是否確認刪除?", function () { 

                var url = "/Admin/Blog/Del/" + id;
                $.post(url, function (data) {
                    layer.alert(data, function () { location.reload(); });

                })

            })
        })
    }

</script>

Controller層代碼:

 public IActionResult Index()
        {
            List<Model.Blog>  list = dal.GetList(" 1=1 order by sort asc,id desc");
            return View(list);
        }

Dal層代碼:

        /// <summary>
        /// 查詢
        /// </summary>
        /// <param name="cond">查詢條件</param>
        /// <returns></returns>
        public List<Model.Blog> GetList(string cond)
        {
            // Dapper – Simple List
            using (var connection = ConnectionFactory.GetOpenConnection())
            {
                string sql = "select * from blog ";
                if (!string.IsNullOrEmpty(cond))
                {
                    sql=sql+$" where{cond}";
                }
                var list = connection.Query<Model.Blog>(sql).ToList();
                return list;
            }
        }

我這里出現的錯誤是“System.Data.SqlClient.SqlException:““=”附近有語法錯誤。”如圖:

解決方法:

1、首先在此處方法上添加斷點,如圖:

 2、運行程序到此斷點(F5運行程序)

 3、單步運行(F11

sqllist添加監視,我們可以清楚的看到list里面的查詢語句為:

select * from blogwhere1=1 order by sort asc,id desc

顯然這是錯誤的查詢語句。

如圖:

正確的應為:

select * from blog where 1=1 order by sort asc,id desc

也就是說blogwhere之間和where1=1之間缺少空格。

所以我們只要在相關的代碼中加上空格就OK了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM