C# 检测是否在C中插入了MySQL行#

C# 检测是否在C中插入了MySQL行#,c#,mysql,sql,database,C#,Mysql,Sql,Database,我有一个C#程序,它试图将数据插入MySQL数据库。数据可能已经在数据库中,在这种情况下,它只是将其覆盖。 例如: 问题是,如果数据被覆盖,rowsAffected为0,这被视为错误。不管数据是插入还是覆盖,我怎么能认为这是一个成功的SQL执行?尝试这很有可能解决您的问题。完全忽略返回值。如果它没有抛出异常,则执行插入或更新。无需检查rowsAffected@mjwills,谢谢,这似乎是最简单的方法。是否存在这样的情况:例如,只插入或更新了一些行,并且没有引发异常,但唯一知道的方法是检查受影响

我有一个C#程序,它试图将数据插入MySQL数据库。数据可能已经在数据库中,在这种情况下,它只是将其覆盖。 例如:


问题是,如果数据被覆盖,
rowsAffected
为0,这被视为错误。不管数据是插入还是覆盖,我怎么能认为这是一个成功的SQL执行?

尝试这很有可能解决您的问题。完全忽略返回值。如果它没有抛出异常,则执行插入或更新。无需检查
rowsAffected
@mjwills,谢谢,这似乎是最简单的方法。是否存在这样的情况:例如,只插入或更新了一些行,并且没有引发异常,但唯一知道的方法是检查受影响的行数?使用该SQL,没有。
MySqlConection dbConnection = ...; // Setup connection
int numCustomersToUpdate = 3;

String query =
    "INSERT INTO customer_regions (customer_id, region_id)
    VALUES (1, 205), (2, 314), (3, 151) // 3 customers
    ON DUPLICATE KEY UPDATE region_id = VALUES(region_id)";

MySqlCommand cmd = new MySqlCommand(query, dbConnection);

int rowsAffected = cmd.ExecuteNonQuery();
if (rowsAffected == numCustomersToUpdate)
{
    // Data either did not exist before and was inserted,
    // or already existed and overwritten
}
else
{
    // Error inserting data
}