4

有没有一种优雅的方式来编写一个有很多参数的插入语句?我有 20 个需要保存在数据库中的标志,以及其他需要插入的信息,以及这 20 个标志。为该插入编写一个包含 30 个参数的方法是浪费时间,但到目前为止我还没有想出其他可能可行的想法。

4

5 回答 5

6

您可以将所有这些参数放在一个对象中并将该对象传递给该方法。

于 2012-04-25T14:18:14.080 回答
3

一种标准方法是创建一个代表您的实体的类,然后传递该类的一个实例。

这使得传递给可能进行验证、演示等以及持久性的其他方法变得容易。

于 2012-04-25T14:18:47.720 回答
1

同意 Sachin,将您需要的 SqlParameters 列表封装在一个类中,并

然后将实例传递给数据层以进一步处理 SQL 查询。

于 2012-04-25T14:27:39.533 回答
1

您可以创建一个接口,该接口表示可以插入到数据库中的对象类型,例如 Iinsertable,它公开诸如 getFields 之类的方法。这样,您就可以创建实现此接口的实体。

使用这些实体,在您的数据库层中,您可以创建一个接受 Iinsertable 作为参数的通用方法,您可以在循环中使用 getFiels 方法查询要插入的所有字段。这将使您的代码可用于每种类型的实体,并且它将非常干净。

于 2012-04-25T14:27:47.917 回答
0

使用我的 SqlBuilder 类。它使您可以编写参数化查询,而不必担心创建参数或它们的名称。

var bldr = new SqlBuilder( myCommand );
bldr.Append("SELECT * FROM CUSTOMERS WHERE ID = ").Value(myId, SqlDbType.Int);
//or
bldr.Append("SELECT * FROM CUSTOMERS NAME LIKE ").FuzzyValue(myName, SqlDbType.NVarChar);

您可以拥有任意数量的标志。每次您想在查询中包含运行时值时,只需调用 Value() 即可。参数的创建是隐藏的,只剩下一个简洁的 SQL 查询。

SqlBuilder 类的代码在这里

于 2014-10-17T09:09:18.283 回答