VS2017一步一步断点调试解决Dapper语句出现的Bug
2024-08-24 21:53:38
最近再做一个项目,出现一个小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"></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"></i>
编辑
</a>
<a href="javascript:void()0;" onclick="del(@blog.id)">
<i class="layui-icon"></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)
对sql、 list添加监视,我们可以清楚的看到list里面的查询语句为:
select * from blogwhere1=1 order by sort asc,id desc
显然这是错误的查询语句。
如图:
正确的应为:
select * from blog where 1=1 order by sort asc,id desc
也就是说blog与where之间和where与1=1之间缺少空格。
所以我们只要在相关的代码中加上空格就OK了。
最新文章
- Java垃圾回收机制 入门
- mongoDB研究笔记:复制集故障转移机制
- 如何解决Android SDK中离线文档打开慢的问题
- html前端总结
- BZOJ 2753 [SCOI2012] 滑雪和时间胶囊 最小生成树
- 总结 XSS 与 CSRF 两种跨站攻击
- 分区 Service Bus 队列和主题
- jquery快速入门(一)
- MyDAL - 组件适用范围说明
- matlab中fix函数,floor函数,ceil函数
- php定界符<;<;<;EOF讲解
- 使用mac自带终端修改hosts
- 1.Liunx 文件管理
- window.setTimeout和window.setInterval的区别,及用其中一个方法记录时间。
- fms +fme 视频直播
- Iframe内联框架
- php strcmp()函数
- Kafka开发环境搭建(五)
- PHP-线程安全与非线程安全版本的区别
- 2013年五大主流浏览器 HTML5 和 CSS3 兼容性大比拼【转】
热门文章
- 自定义合并列:el-table
- 基于VMware Workstation在Windows Server 2008 R2上搭建SQL Server 2012高可用性组(AlwaysOn Group)测试环境(二)
- 【第八篇】SAP ABAP7.5x新语法之F4增强【续】
- ffmpeg文件切片
- asp.net mvc项目使用spring.net发布到IIS后,在访问提示错误 Could not load type from string value &#39;DALMsSql.DBSessionFactory,DALMsSql&#39;.
- vue 去除前后空格trim
- indexOf() 使用方法(数组去重)
- SA-题目
- 初级算法-6.两个数组的交集 II
- ASP.NET Log4net 记录日志