我正在从参数列表中尝试名为@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
?
如果有什么不清楚,请告诉我,我会解释。
答案 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);