动态SQL的拼接技巧有哪些

技术动态SQL的拼接技巧有哪些这篇文章给大家介绍动态SQL的拼接技巧有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。常见的误解有: 1. 只用 ado.net ,无法进行动态 SQL 拼接。 2

本文向您介绍动态SQL的拼接技巧,非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。

常见的误解有:

1.只使用ado.net,不能进行动态SQL拼接。

2.有几个动态参数,代码的重复量成为这些参数不同个数的组合数。动态参数越多,重复量越大。

对于第二个问题,以下错误代码是证据:

代码如下:

if(id0字符串。IsNullOrEmpty(name)){ 0

命令。CommandText='从t1中选择*其中id=?';

命令。参数.添加(id);

}

if(id=0!字符串。IsNullOrEmpty(name)){ 0

命令。CommandText='从t1中选择*其中name=?';

命令。参数.添加(名称);

}

if(id=0!字符串。IsNullOrEmpty(name)){ 0

命令。CommandText='从t1中选择*其中id=?和名称=?”;

命令。参数.添加(id);命令。参数.添加(名称);

}

这两个问题都很容易解决。只要给我们一个正确的代码示例:

代码如下:

字符串sql='从t1中选择*其中1=1 ';

if(id!=null) { sql='和id=?';

addParameterValue(cmd,id);}

if(!字符串。IsNullOrEmpty(name)) { sql='和name=?';

addParameterValue(cmd,name);}

命令。CommandText=sql

这里的诀窍是使用一个' where 1=1 ',这巧妙地解决了后续sql拼接中每行开头是否应该有' and '的问题。而这个‘其中1=1’不会执行数据库的索引,这会影响性能。排列组合参数然后编写各种组合的SQL是一个很奇怪的想法。问题是很多初学者都有这种思维习惯。我不是计算机班出身,不知道哪本教材是这样教的。不幸的是,这种思维习惯是错误的。其中“1=1”是课本上没有的小技巧,但是非常有用。另外,在程序中,通常会要求用户在用户界面中输入一个数字,这个数字的数值会在代码中自动变成一个字符串,然后尝试将这个字符串转换成int/long,最后发送给sql函数。这里需要特别注意的是,很多人把一个特殊的数值视为“用户没有输入的默认值”,就像本文开头写的错误码一样:

代码如下:

if(id0字符串。IsNullOrEmpty(名称))

问题是0是否是异常的业务值,在代码中看不到。不排除程序员可以任意指定一个数值为“用户没有输入的默认值”。如果这个默认值碰巧有其他含义,就会引起问题。在数据库理论中,没有指定的数据,无论是字符串还是int/long,都用null表示。这是一个好主意,也可以用在sql拼接这里。因此,我们在下面的代码中使用它:

代码如下:

if(id!=null)

在上面的代码中,添加ParameterValue(cmd,name);是一个简单的封装函数,用于封装下面的短代码。目的是使最终代码更简单、更直观:

代码如下:

DbParameter p=cmd。createParameter();p . ParameterName=' @ XXX价值=TTT;cmd。参数。添加(p);

当然,这个addParameterValue()包装函数是可选的。多写几个db parameter p=cmd . create parameter()没有什么大问题。

动态SQL的拼接技巧呢,希望在这里分享一下。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/128955.html

(0)

相关推荐

  • 如何使用sklearn进行数据挖掘

    技术如何使用sklearn进行数据挖掘今天就跟大家聊聊有关如何使用sklearn进行数据挖掘,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.1 数据挖掘的步骤 

    攻略 2021年11月2日
  • 怎么处理数据库中文字符集乱码

    技术怎么处理数据库中文字符集乱码本篇内容主要讲解“怎么处理数据库中文字符集乱码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么处理数据库中文字符集乱码”吧!一、问题描述

    攻略 2021年11月11日
  • 渺渺茫茫,出自西游记的茫茫渺渺是什么意思

    技术渺渺茫茫,出自西游记的茫茫渺渺是什么意思指辽阔无际的样子渺渺茫茫,亦指模糊、不清楚。原文:西游记第一回《灵根育孕源流出 心性修持大道生》混沌未分天地乱,茫茫渺渺无人见。自从盘古破鸿蒙,开辟从兹清浊辨。覆载群生仰至仁,

    生活 2021年10月24日
  • 如何利用Cloudflare为基于GitHub Pages的Hexo博客添加HTTPS支持

    技术如何利用Cloudflare为基于GitHub Pages的Hexo博客添加HTTPS支持这篇文章将为大家详细讲解有关如何利用Cloudflare为基于GitHub Pages的Hexo博客添加HTTPS支持,文章内

    攻略 2021年11月12日
  • MySQL多版本并发控制机制源码分析

    技术MySQL多版本并发控制机制源码分析本篇内容主要讲解“MySQL多版本并发控制机制源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL多版本并发控制机制源码分

    攻略 2021年12月3日
  • html进度条代码(html进度条显示百分比)

    技术html5进度条的标签是哪个本篇内容主要讲解“html5进度条的标签是哪个”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5进度条的标签是哪个”吧!

    攻略 2021年12月15日