0

I was thinking that doing java code for executing DDL, DML etc is cumbersome and involves a lot of typing. So, I was thinking if databases have/can be made to have the following feature -Take a script in a text file and execute the entire script.

If we had something like this, then we could type our SQL queries into a text file in the usual, easy way. The java code then sends this text file to the DB which executes it as if someone had typed the script into its management GUI.

Is this possible ? What could be the disadvantages of such a system ?

4

4 回答 4

4

我所知道的几乎每个数据库都具有这种功能(包括您的标签中提到的 MySQL)。您只需从命令行客户端执行类似的操作(此示例适用于 MySQL)

mysql -h hostname -u user < sql_script.sql

没有使用某种编程语言来传递文件的中间层。

于 2012-07-31T21:44:38.070 回答
3

我会说为您的 DDL 争取它。我总是将我的表/索引/约束创建放在 SQL 脚本中并运行它来设置我的数据库。

但是,对于 DML,就像其他发帖人所说的那样,您将经常(通常)根据用户输入进行这些查询。如果用户在您的系统中创建了某个对象,您最终将通过一个或多个插入/更新来保存它。这些语句的参数将是用户输入系统的值。如果您使用 Java 的工具直接执行这些功能,它将更易于维护和理解。尝试用参数替换 SQL 文件中的标记并将其传递给数据库将很快变得更加麻烦。

于 2012-07-31T21:55:10.607 回答
1

您需要 Java 代码中的语句,因为作为参数发送的大多数值仅在运行时才知道:它们来自 GUI,以及在每个查询之间执行的所有业务代码。否则,是的,你想要的存在:它们被称为存储过程。

于 2012-07-31T21:45:19.947 回答
1

您的建议本质上类似于在 RDBMS 上调用存储过程。

缺点是您的域逻辑现在驻留在您的持久层中,这有几个原因(可能)不好。

主要问题之一是:代码维护:从维护的角度来看,程序员的噩梦以及需要 domani 逻辑和 sql 语句技能的程序员。根据您团队的规模,这可能是一个大问题。一般遵守关注点分离规则

于 2012-07-31T21:44:24.940 回答