如何删除MySqlCommand中的特定参数?

时间:2015-12-29 13:04:23

标签: vb.net

我正在从参数列表中尝试名为@idp的参数。特别是我提供了以下代码:

Using dbCon As MySqlConnection =Connection()

dbCon.Open()

query = "INSERT INTO user (id_users, GUID)
                                       VALUES(@idp, @guidp)"

 MyCommand = New MySqlCommand(query, dbCon)

MyCommand.Parameters.AddWithValue("@user_id", 4) 'Parameter to replace in the next time
MyCommand.Parameters.AddWithValue("@guidp", GUID) 

... There is other parameter here I reduce in this example

MyCommand.ExecuteNonQuery()

MyCommand.Parameters.AddWithValue("@idp", 5) 'Should replace the @idp but doesn't
Sync(MyCommand)

End Using

现在我的查询只是一个示例,我有一长串参数,所以我不想创建冗余代码。我的应用程序在本地数据库和在线数据库中执行插入。在Sync函数中,我将MyCommand作为参数传递,并使用.Clone复制在线数据库中的确切查询。问题是,在这个特定情况下,我对此表格有约束,因此我无法使用上述代码中执行的查询的LastInsertedId。为了避免这种情况,我保存了一个可以在任何类中使用的全局变量,这个变量在被替换的参数中使用,但是为了显示我想要实现的内容,我只需将变量名替换为{{1} } value,这里:

5

如果不执行MyCommand.Parameters.AddWithValue("@idp", 5) 并重新声明已使用的所有参数,如何使用@idp值替换参数5而不是4
如果有什么不清楚,请告诉我,我会解释。

1 个答案:

答案 0 :(得分:1)

Don't use AddWithValue。如果您创建参数,则可以使用Remove排除没有Clear()的参数。 (警告:我不使用MySQL,因此这种语法可能不准确)

MySqlParameter parUserId = new MySqlParameter("@user_id", MySqlDbType.Int32);
parUserId.Value = 5;
MyCommand.Parameters.Add(parUserId);
later....
MyCommand.Parameters.Remove(parUserId);