JDBC SQL占位符问题

之前一直以为JDBC占位符一直是?,今天发现在Oracle中可以用:abc来表示

如下代码:

 

public class ExcelClient {
 
    /**
     * @param args
     */
    public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
    //连接地址是由各个数据库生产商单独提供的,所以需要单独记住
    public static final String DBURL = "jdbc:oracle:thin:@172.18.50.139:1521:movitechOcl";
    //连接数据库的用户名
    public static final String DBUSER = "space_sm";
    //连接数据库的密码
    public static final String DBPASS = "space_sm";
 	
	public static void main(String[] args) throws Exception {
        Connection con = null; //表示数据库的连接对象
        PreparedStatement pstmt = null; //表示数据库更新操作

        String sql = "SELECT * from sm_scenario t where t.id = :id"; //正确

        Class.forName(DBDRIVER); //1、使用CLASS 类加载驱动程序


        con = DriverManager.getConnection(DBURL, DBUSER, DBPASS); //2、连接数据库
        pstmt = con.prepareStatement(sql); //使用预处理的方式创建对象
        pstmt.setString(1,"1419328510900");

        ResultSet rs = pstmt.executeQuery();
        if(rs.next()) {
            System.out.println(rs.getString(1));

        }

        pstmt.close();
        con.close(); // 4、关闭数据库
    }
}

结论不同数据的驱动不一样,占位符的定义也肯不相同。

1. 在Oracle中占位符可以是?或者:abc

 

2. 在MySQL中站位符只能是?