10

有时,如果我忘记了;. 但有时它不会。

而在 JDBC 和 Android SQLite 中,似乎我根本不需要;。我很困惑。

什么时候应该使用分号?

4

4 回答 4

11

分号表示语句的结束,所以如果有多个语句,那么你应该使用分号,否则它会正常工作。

我通常使用分号作为一种实践,即使您在 sql 客户端上运行查询(例如在 Sql Developer 中)如果您在工作表上有多个语句,使用分号也非常有用,因为您可以简单地转到该特定语句并使用 F9要执行该操作,如果没有分号,这是不可能的。

于 2013-09-22T07:49:40.347 回答
4

如果您一次运行单个查询,则不是强制性的,如果您想使用单个命令运行多个查询,则必须这样做。

但是,在大多数 JDBC 驱动程序中,不可能在单个 JDBC 命令中添加用分号分隔的多个查询,但是存在允许您添加多个语句的 addBatch 方法:

java.sql.Statement stmt=con.createStatement();   
stmt.addBatch(insert_query1); //insert_query1   
stmt.addBatch(insert_query2); //insert_query2  

根据经验,如果您需要多条语句,则在 JDBC 中根本不需要分号,请使用addBatch.

于 2013-09-22T07:48:39.297 回答
4

通常分号不是语句实际语法的一部分(因为大多数数据库内部 API 一次执行一条语句)。相反,分号是“语句结束”标记或语句分隔符,通常在 CLI 或数据库脚本工具中定义。这允许该工具知道语句何时结束,因此它可以将该单个语句发送到数据库以执行。

另一方面,JDBC API 旨在一次执行一个(!)语句,因此您不需要这样的分隔符(语句是整个字符串)。这意味着不需要分号,并且由于它不是许多数据库的实际语句语法的一部分,因此包含它也是语法错误。一些 JDBC 驱动程序会从语句中删除最后;一个以“修复”它,而一些驱动程序则不会。

一些驱动程序允许 - 与 JDBC 规范相反 - 多个语句作为单个字符串执行,这通常必须使用连接属性启用,例如对于 MySQL,它是选项allowMultiQueries(有关详细信息,请参阅MySQL 属性)。

于 2013-09-22T10:26:49.277 回答
3

取决于 DBMS 和版本号。在单个语句的末尾,分号通常是可选的。但是,如果您要执行包含多个语句的脚本,则它们需要以分号结束。

除了最后一个。但是不一致似乎是不好的形式。

于 2013-09-22T07:51:10.210 回答