动态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)

相关推荐

  • 信用卡可以逾期几天,信用卡逾期几天算严重吗

    技术信用卡可以逾期几天,信用卡逾期几天算严重吗超过了信用卡还款日几天算逾期,要看信用卡的还款宽限期是多久信用卡可以逾期几天。大部分银行会为信用卡持卡人提供3天左右的还款宽限期,在还款宽限期内还款视同按时还款,不会产生利息

    生活 2021年10月23日
  • python中pymsql模块怎么用

    技术python中pymsql模块怎么用这篇文章主要介绍了python中pymsql模块怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、pymys

    攻略 2021年11月24日
  • 张飞穿针的歇后语是什么,大眼瞪小眼”比喻什么意思

    技术张飞穿针的歇后语是什么,大眼瞪小眼”比喻什么意思有一次,张飞正要率军出发,却被 夫人叫住,拿出一根绣花针,一根红纱 线,非要张飞帮她把线穿上才能走。张飞听了哈哈大笑:“穿针引线,虽是 女人干的活,但也难不住我张飞穿针

    生活 2021年10月27日
  • 一语成,历史上有哪些一语成谶的事

    技术一语成,历史上有哪些一语成谶的事隶属于昆明陆军总司令部的第四方面军组建于1945年3月5日一语成,仅仅一个多月后,方面军司令官王耀武就指挥所部在湘西大破日寇,一举取得雪峰山大捷,8月在芷江出席日军投降的草签仪式,不久

    生活 2021年10月30日
  • 抖音刷赞会上热门吗,刷赞平台自助下单

    技术抖音刷赞会上热门吗,刷赞平台自助下单抖音刷赞会上热门吗,刷赞平台自助下单
    发布视频之后,如果想要获得播放量,虽然说是刷赞是很爽,但是也要担心被封号的问题,那么如果被封号了要怎么解决呢?
    抖音代刷平台可以上热门吗

    测评 2021年11月13日
  • 在IDEA中如何部署一个简单的考勤补签功能

    技术在IDEA中如何部署一个简单的考勤补签功能这篇文章主要介绍了在IDEA中如何部署一个简单的考勤补签功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 

    攻略 2021年11月24日