zoukankan      html  css  js  c++  java
  • C# 平时碰见的问题【4】

    1. 模糊查询 like的参数化写法

    string keyword="value"; // 要模糊匹配的值

    错误示范:    

          sql:    string strSql="select * from [Table]  where [Field] like %@Field%";

          参数: System.Data.SqlClient.SqlParameter[] parms = new[] { 

                  new System.Data.SqlClient.SqlParameter("@Field",System.Data.SqlDbType.VarChar,400)
                  };
              parms[0].Value = keyWord ;

    输出:    ado.net 给我们输出的参数 SQL语句 还是原原本本的 select * from [Table]  where [Field] like %@Field%  SQL语句错误

    解决办法(1):

          sql :   string strSql="select * from [Table]  where [Field] like '%'+@Field+'%' "

          这样ado.net 就能将参数正确的输入了

    解决办法(2):

          sql:    string strSql="select * from [Table]  where [Field] like @Field";      

          参数: System.Data.SqlClient.SqlParameter[] parms = new[] { 

                  new System.Data.SqlClient.SqlParameter("@Field",System.Data.SqlDbType.VarChar,400)
                  };
              parms[0].Value = "%"+keyWord +"%";

    分析:

          我们期望最后传输到数据库的 like语句应该是: select * from [Table] like [Field] like '%value%' ;  

          直接%@Field%,污染了ado.net的参数标示@符号导致无法正确替换参数;

          方法一在sql语句中拼接字符串的方式来得到如 '%value%'的值;  注:sql语句中 字符串用单引号来作为字符串的起始符, 而sql server中以 + 号 拼接字符串.所以'%value%'等同于 '%'+value'%'

          方法二则直接在赋值语句中加入模糊匹配符;

          

  • 相关阅读:
    安装mysql警告 warning: mysql-community-server-5.7.19-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    RPM方式安装MySQL5.6
    CentOS7安装MySQL冲突和问题解决小结
    Linux(64) 下 Tomcat + java 环境搭建
    自写Jquery插件 Combobox
    自写Jquery插件 Datagrid
    自写Jquery插件 Menu
    scrapy 中间件
    提高scrapy爬取效率配置
    scrapy基于请求传参实现深度爬取
  • 原文地址:https://www.cnblogs.com/mushishi/p/4110417.html
Copyright © 2011-2022 走看看