首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询语法是在java级别检查还是在数据库级别检查?

查询语法是在java级别检查还是在数据库级别检查?
EN

Database Administration用户
提问于 2015-06-06 05:02:22
回答 2查看 253关注 0票数 0

如果我使用普通的JDBC连接来访问Mysql的数据库,那么查询的语法将在java级别或Mysql级别进行检查。

示例

String Query="Select * fromEMP"

以上错误的查询语法抛出一个SQLException。

因此,这个异常实际上是由MySQL或java引发的。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2015-06-06 07:20:32

看看java (http://docs.oracle.com/javase/7/docs/api/),在我看来,抛出的外快来自数据库。

来自Java构造函数一节。

SQLException()构造一个SQLException对象。SQLException (字符串原因)用给定的原因构造一个SQLException对象。SQLException (字符串原因,String SQLState)使用给定的原因和SQLState构造SQLException对象。SQLException (字符串原因,字符串SQLState,int vendorCode)使用给定的原因( SQLState和vendorCode )构造SQLException对象。SQLException (字符串原因、字符串sqlState、int vendorCode、Throwable原因)使用给定的原因( SQLState、vendorCode和原因)构造SQLException对象。SQLException (字符串原因、字符串sqlState、可抛出原因)使用给定的原因( SQLState和原因)构造SQLException对象。SQLException (字符串原因,可抛原因)使用给定的原因和原因构造SQLException对象。SQLException(Throwable原因)构造具有给定原因的SQLException对象。

然而,测试这一理论的简单方法是使用第二种语言(例如PHP )来尝试运行相同的查询,并查看您是否得到了相同的消息,如果从Java获取的信息只是来自Java,那么您将得到一条不同的消息,如果它来自SQL连接,即数据库本身--那么逻辑将声明您应该具有相同的消息返回。

票数 0
EN

Database Administration用户

发布于 2015-06-06 07:10:37

可能有两种不同的东西:

  • 在MySQL服务器中检查语法。可能会有连接器/客户端库在发送之前进行解析和检查,但这只意味着要做两次相同的工作。MySQL服务器以字符串的形式接收查询,然后处理查询。即使对于准备好的语句,服务器也会以文本形式接收语句并对其进行编译。
  • SQLException可能是扩展的Java,它纯粹是Java侧构造(通常是JDBC代码的一部分)。因此,这个异常是由Java MySQL客户端库在发送查询时抛出的,服务器将返回一些错误消息,而不是数据。客户端和服务器通过套接字或tcp进行通信,因此服务器无法直接向客户端抛出异常。它必须通过其他方式(可能是不同的响应数据包类型或类似的东西)发出错误信号。
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/103384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档