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

naw*_*fal 0 c# sql parameterized-query

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

说我有代码:

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

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

c.Parameters.AddWithValue("@parentId", 1);
c.Parameters.AddWithValue("@id", 2);
Run Code Online (Sandbox Code Playgroud)

要么

c.Parameters.AddWithValue("parentId", 1);
c.Parameters.AddWithValue("id", 2);
Run Code Online (Sandbox Code Playgroud)

要么

c.Parameters.AddWithValue(@"parentId", 1);
c.Parameters.AddWithValue(@"id", 2);
Run Code Online (Sandbox Code Playgroud)

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

更新:据我所知,即使msdn没有遵循约定,也使用第1和第2.我将坚持使用第一个明确的第一个.谢谢

Mar*_*ell 5

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