SQL中占位符?的用法介绍~

Sql语句中的占位符?有什么作用

String sql = "SELECT userid,name FROM tuser WHERE userid=? AND password=?" ;

pstmt = conn.prepareStatement(sql) ;

pstmt.setString(1,userid) ; // 这里设置了第一个?的值

pstmt.setString(2,password) ; // 这里设置了第二个?的值 等你“setString”完所有的?后,你的sql就构造好了。

若要创建每次使用不同值的查询,可以在查询中使用参数。参数是在运行查询时所提供值的占位符。

带参数的 SQL 语句可能如下所示,其中“?”表示代表作者 ID 的参数:

SELECT title_id

FROM titleauthor

WHERE (au_id = ?)

可使用参数的位置可以将参数用作文本值(文本值或数值)的占位符。最常见的是,参数经常在单个行或组的搜索条件中(即在 SQL 语句的 WHERE 或 HAVING 子句中)用作占位符。 某些数据库允许在表达式中将参数用作占位符。

使用PreparedStatement执行SQL语句时占位符(?)的用法

1.Student数据库表

ID namegender
   

2.Java代码

public static void main(String[] args) {
      int _id=1;
      String _name="张三";
      String _gender="男";
      Connection con=null;
      PreparedStatement ps=null;

    try {
      //加载驱动
      Class.forName("com.mysql.jdbc.Driver");
      //使用驱动创建连接
      con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","111111");
      //定义sql语句
      String sql="insert into hehe values(?,?,?)";
      //创建执行命令对象
      ps= con.prepareStatement(sql);
      //设置参数
      ps.setInt(1, 1);
      ps.setString(2,_name);
      ps.setString(3, _gender);

      //执行命令并接受结果
      int result=ps.executeUpdate();
      System.out.println(result);

      } catch (ClassNotFoundException e) {

      e.printStackTrace();
      } catch (SQLException e) {

      e.printStackTrace();
      }finally{
    try {
      if(null!=ps)
      ps.close();
      if(null!=con)
      con.close();
     }catch (SQLException e) {

      e.printStackTrace();
       }
      }
    }
 }

3.得到结果

IDnamegender
1张三 

最终个人理解,占位符就字面意思(即占位用的),通过传入参数或设定参数取代所占用的位置,完成字符串的拼接~

  • 15
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SQL语句占位符(?)用作参数的占位符。它的作用是在执行SQL语句之前,将具体的参数值绑定到占位符上,以便动态地构建SQL语句。通过使用占位符,可以避免直接将参数值嵌入到SQL语句,从而提高了SQL语句的安全性和可维护性。\[1\] 例如,在使用PreparedStatement执行SQL语句时,可以通过调用setString、setInt等方法来设置占位符的值。这样,每个占位符都可以与一个具体的参数值相关联,从而构建出完整的SQL语句。\[1\] 占位符的位置是按照它们在SQL语句出现的顺序进行关联的,而不是根据名称进行关联。这意味着如果SQL语句有多个相同的占位符,每个占位符都必须与一个绑定参数相关联。\[2\] 在动态PL/SQL,只有唯一的占位符才与USING子句的绑定参数按位置对应。如果一个占位符在PL/SQL出现多次,那么所有相同的占位符都只与USING语句的一个绑定参数相对应。\[2\] 占位符最常用于SQL语句的WHERE或HAVING子句,用作单个行或组的搜索条件的占位符。某些数据库还允许在表达式将参数用作占位符。通过使用占位符,可以实现动态的查询条件,提高SQL语句的灵活性和可重用性。\[3\] #### 引用[.reference_title] - *1* *3* [SQL占位符?的用法介绍~](https://blog.csdn.net/litrainy/article/details/84067808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Oracle的动态SQL](https://blog.csdn.net/fw0124/article/details/6845790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值