qq_36805380
2016-12-13 11:51
采纳率: 72.7%
浏览 2.1k
已采纳

关于sql语句的多个查询

下面这句话单个分开来都可以实现,然后合在一起后查询,输入身份证号号字段例如123456,但是datagridview直接跳出所有信息了,多次试验发现是模糊查询like %的问题,求教如何解决这个问题(输入姓名或身份证号或姓名的模糊查询均正确跳出信息)?
sqlstr = "select * from 暂住人员信息表 where 身份证号码='" & SelectPop.TextBox1.Text & "'or 姓名='" & SelectPop.TextBox2.Text & "'or 姓名 like '" & SelectPop.TextBox2.Text & "%'"

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • b328361744 2016-12-14 01:00
    已采纳

    String 字符串的拼接问题,如果传递过来是null或""的话sqlstr 就不要拼接这个字段的值。
    sqlstr = “select * from 暂住人员信息表 where”;
    int k = 0;
    if(SelectPop.TextBox1.Text != null && SelectPop.TextBox1.Text . eql("")){
    if(k == 0){
    sqlstr += 身份证号码='" & SelectPop.TextBox1.Text & "'";
    k++;
    } else{
    sqlstr += 身份证号码= 'or '" & SelectPop.TextBox1.Text & "'";
    }

        }
    
    打赏 评论
  • spongeBob_spongeBob 2016-12-13 12:48

    可以在后台加判断,判断是哪个输入框传回来的值,如果是姓名栏传回来的就是where 姓名='" & SelectPop.TextBox2.Text ,

    打赏 评论
  • qq_36805380 2016-12-13 13:07

    那个,具体传输回来的值该怎么写?int rows=cmd.ExecureNonQuery()???

    打赏 评论
  • my_name_nb 2016-12-13 13:56

    & 这是什么鬼啊 这个符号代表什么啊

    打赏 评论
  • qq_36805380 2016-12-14 00:24

    vb.net里面需要加这个把text.box里的值括起来

    打赏 评论
  • 夕阳雨晴 2016-12-14 00:42

    主要问题在【or 姓名 like '" & SelectPop.TextBox2.Text & "%'"】,当你只输入身份证号号字段例如123456时,前两个条件查不出来数据,而【or 姓名 like '" & SelectPop.TextBox2.Text & "%'"】则可以查找出所有数据,原因是当【 姓名 like '" & SelectPop.TextBox2.Text & "%'"】,由于没有输入姓名,则其等同于【''】,则该条件转换为【or 姓名 like '“”%'"】,即【or 姓名 like '%'】,即当项目不为null时,可以查找所有具有姓名的信息【】包括姓名为空串''

    打赏 评论
  • 纯菜鸟 2016-12-14 07:31

    楼上是正解,字符拼不接

    打赏 评论

相关推荐 更多相似问题