从C#中参数化查询中占位符的正确方式

时间:2012-05-06 20:48:15

标签: c# sql parameterized-query

一切正常,但这只是为了知道正确的练习/正确的方法/有意义的

说我有代码:

string query = "SELECT * FROM table WHERE parent_id=@parentId and id = @id";
OleDbCommand c = new OleDbCommand(query, _con);

对于剩下的部分,以下哪项是正确的? :

c.Parameters.AddWithValue("@parentId", 1);
c.Parameters.AddWithValue("@id", 2);

c.Parameters.AddWithValue("parentId", 1);
c.Parameters.AddWithValue("id", 2);

c.Parameters.AddWithValue(@"parentId", 1);
c.Parameters.AddWithValue(@"id", 2);

(我知道它不是第三个)第二个看起来正确的方式。所有这些都取决于SQL实际如何从代码中解释参数化参数。有什么想法吗?我特别要问,因为我不喜欢一个知识渊博的人嘲笑我在编码时的不良习惯,如果有的话可以在这里:)

更新:据我所知,即使msdn不符合惯例,也会使用第1和第2条。我将坚持使用第一个明确的第一个。感谢

1 个答案:

答案 0 :(得分:5)

一切都会奏效。第二个和第三个是相同的,只要参数具有合理的名称(此处@仅影响c#编译器行为),但可以说第二个/第三个是优选的,因为它们可以在任何连接上工作 - 包括@不是参数符号的那些。但是,由于@也在查询中,这可能是一个微弱的差异。