• sql 参数化查询问题


    一、正确案例

    string name=“梅”;

    string sql="select * from test where  Name  like @Name";

    //包含 梅
    SqlParameter par=new SqlParameter("@Name","%"+name+"%");

    // 以 梅 开头

    SqlParameter par=new SqlParameter("@Name", name+"%");

    // 以 梅 结尾

    SqlParameter par=new SqlParameter("@Name", "%"+name);

    二 错误案例  

    string name=“梅”;

    // 多加 单引号 ‘’ ,@Name 被识别为字符串而不是参数。

    string sql="select * from test where  Name  like  '@Name' ";

    SqlParameter par=new SqlParameter("@Name","%"+name+"%");

    //相同错误变种1

    string sql="select * from test where  Name  like  '%@Name%' ";

    SqlParameter par=new SqlParameter("@Name", name);

    //相同 错误变种2

    string sql="select * from test where  Name  like   ' %" + "@Name"+"%'  ";

    SqlParameter par=new SqlParameter("@Name", name);

    主要是对单引号的理解错误。 参数化查询中对字符串类型会自动处理,不需要手动添加单引号。

    三 一种可行,但没有用到参数化查询的方法

    // sql 简单拼接(存在sql注入攻击的风险)

    string name=“梅”;

    string sql="select * from test where  Name  like   ' %" + name+ "%'  ";

     四、动漫化:

    我仿佛听到动漫人物“字符串”: 讨厌,人家是自带胸器(单引号)的啦!

    配乐响起:just 地雷,just 地雷,地雷 ~地雷~ 

    参考来源:https://bbs.csdn.net/topics/100119798

  • 相关阅读:
    strcpy 详解
    c/c++中static详解
    c/c++中const详解
    12、Java中的接口
    11、java中的模板方法设计模式
    10、java中的抽象类
    9、java中的final关键字
    8、java继承中的this和super的应用
    7、java实现的两种单例模式
    6、java中的构造代码块
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/9358661.html
Copyright © 2020-2023  润新知