PreparedStatement以及模糊查找的个人经验谈

PreparedStatement以及模糊查找的个人经验谈

本篇博客分享我个人的一些PreparedStatement和模糊查找的个人使用经验以及我个人对PreparedStatement和模糊查找的一些理解,我也会引用一些我在网上找来的概念方便读者理解。

PreparedStatement

该 PreparedStatement接口继承Statement,并与之有所不同:

  1. PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。
  2. 由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。
  3. 作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。另外它还添加了一整套方法,用于设置发送给数据库以取代 IN 参数占位符的值。同时,三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数。这些方法的 Statement 形式(接受 SQL 语句参数的形式)不应该用于 PreparedStatement 对象。

以上是我摘自百度百科的对PreparedStatement的定义,在我个人的理解来看,PreparedStatement对输入的sql语句提前进行编译,不仅提高了运行和处理的效率,也提高了一定的安全性,使得我们对数据库的操作更加安全,而PreparedStatement和Statement的使用方法也有所不同,具体使用方法如下

PreparedStatement:
	
	Connection con;//用Drive驱动对con赋值
	PreparedStatement st = con.prepareStatement("select * from table_a");
    ResultSet rs = st.executeQuery();

Statement
	Statement st = con.createStatement();
	ResultSet rs = st.executeQuery("select * from table_a");
	

具体使用区别和感觉,还是需要读者自己回去测试,这里我只给出一些例子来给读者示例。但是尽量使用PreparedStatement在我看来是比较合适现代编程的。

模糊查找

对于模糊查找就是对关键字进行查询,sql语句与一般查询语句差别并不大,具体如下:
一般模糊查询语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件。

其中关于条件,SQL提供了四种匹配模式:

  1. % :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示;

  2. _ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句;

  3. [ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个;

  4. [^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

  5. 查询内容包含通配符时,由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。

具体语句我举个例子

select * from table_a where name like '%黄%'
//表示姓名中有黄的都搜索出来
select * from table_a where name like '黄%'
//表示姓名中姓黄的都搜索出来
select * from table_a where name like '黄_'
//表示姓名中姓黄的且只有两个字的都搜索出来

以上便是我对模糊查询的个人理解与经验还有引用,相信通过以上读者能对模糊查询有个基本的了解。

我希望我的这篇博客能给需要的读者提供些许帮助,谢谢阅读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值