避免程序中的SQL语句是个好主意吗?

Man*_*eld 1 sql

我最近遇到了一个程序,它是在一个表中使用sql语句开发的,每个语句都有一个代码.而不是在程序本身中具有特定的sql语句.

所以,而不是像这样的代码:

string query = "SELECT id, name from [Users]";
cmd.ExecuteQuery(query);
Run Code Online (Sandbox Code Playgroud)

他们使用这样的代码:(简化)

string firstQuery = "SELECT queryText from [Queries] where queryCode = 'SELECT_ALL_USERS'";
string userQuery = cmd.ExecuteQuery(firstQuery);//pretend this directly returns the result of the first query

cmd.ExecuteQuery(userQuery);
Run Code Online (Sandbox Code Playgroud)

据我所知,这背后的逻辑是它使程序更容易维护,因为开发人员可以自由地更改"用户sql"而无需实际更改程序.

然而,这让我觉得有点适得其反.这种代码会被认为是个好主意吗?

编辑:我不是在寻找像"使用ORM"这样的建议.假设sql查询是唯一的选择.

mik*_*key 7

在我看来,这种方法很荒谬.将尽可能多的SQL与中间层分离是有价值的(可维护性,模块化),但为了实现这一目的,我建议使用存储过程.