关于JCBC preparedstatement参数表达

 使用JDBC总记得preparedstatement中参数的表达应该是用?,但是今天发现如果用:userId 也是可以的,照样编译通过,而且正常执行结果无误,请问是什么原因?

http://blog.csdn.net/ljheee/article/details/50988796

sql语句分为静态sql和动态sql
静态sql: select * from table where id=1;
动态sql: select * from table where id=:id;
动态sql,运行时编译,且不安全

参考,http://blog.csdn.net/zy_281870667/article/details/51683523