声明我的理解是,对象不能用于开发企业应用程序,因为它具有良好应用程序中的各种问题。为什么它在新版本中尚未被弃用?如果“准备”陈述优越,为什么需要“陈述”对象?
回答
Statement
是一个非常好的界面。有什么不好的是通过将字符串连接在一起来创建查询,特别是包含用户输入的字符串。如果你只发出不包含变量的常量查询,那么简单的Statement
接口就可以很好地工作。
'Statement'是一个接口,实际上 – leonbloy
@leonbloy当然你是对的!固定。 –
声明
使用通用访问数据库。在运行时使用静态SQL语句时很有用。 Statement接口不能接受参数。
使用JDBC中声明应该是100%本地化被用于DDL(ALTER, CREATE,GRANT等),因为这些是不能接受BIND 变量唯一的语句类型。
的PreparedStatement
当您计划使用SQL语句多次使用。 PreparedStatement接口在运行时接受输入参数。
PreparedStatements或CallableStatements应该用于每种其他类型的语句 (DML,查询)。因为这些是接受绑定变量的语句类型。
似乎有点过分,像企业风格的导游一样横行;为什么我们应该使用'PreparedStatement'作为''SELECT COUNT(*)FROM USERS'“? –
JDBC驱动程序可以以不同的方式处理SQL语句。具体来说,在Oracle中,PreparedStatement想要绑定它看到的所有内容,如:NAME。
这对Oracle触发器是有问题的,它使用:NEW和:OLD名称来表示新旧行。
因此,当您尝试使用PreparedStatement创建Oracle触发器时,它将失败,因为没有任何内容绑定到NEW /:OLD的引用。
您必须使用正常的Statement.execute()调用来执行此操作。
Out of Box答案.. :)谢谢 –
另外PreparedStatement比Statement更安全。
当您使用Statement并且您从用户那里获得输入并将其直接传递给查询时请小心。
用户可以使用SQL注入破解您的系统。
- 1. 准备好的陈述是什么?
- 2. 案件陈述里面如果陈述
- 3. 如果陈述“不是陈述”?
- 4. 如果陈述在案例陈述(VB.Net)
- 5. 需要帮助的PHP如果陈述
- 6. PHP如果陈述
- 7. 如果陈述在
- 8. 破碎的对象陈述
- 9. 为什么这些准备好的陈述不起作用?
- 10. PDO准备陈述:我们需要逃脱吗?
- 11. 准备好的陈述中的递归
- 12. 准备好的陈述,很多字段
- 13. 准备好的陈述问题/ bindValue
- 14. 为什么如果陈述不符合我的要求呢?
- 15. 测验 - 如果陈述
- 16. 如果陈述不正确
- 17. 如果陈述与arraylist
- 18. 如果陈述与空_Get
- 19. 如果陈述与OnScreenText
- 20. 如果陈述不正常?
- 21. OCaml。关于如果陈述
- 22. 打破如果陈述PHP
- 23. 单线如果陈述
- 24. 如果陈述不正确
- 25. php如果没有陈述
- 26. 古怪如果陈述
- 27. 如果陈述在锚
- 28. 如果不是或陈述
- 29. 如果陈述使用onchronometerticklistener
- 30. 如果陈述在R
欢迎来到Stackoverflow!这听起来像你在谈论SQL语句。你指的是哪种编程语言和哪种数据库访问技术? – Joni
我指的是Java语句,用于JDBC连接的准备语句。 –
看看http://stackoverflow.com/a/3385295/1541533 –