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