c#sql插入了很多参数

时间:2012-04-25 14:16:01

标签: c# sql winforms

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

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

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

答案 4 :(得分: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类的代码是here