0

我在 C#.Net 和 Oracle、Windows 应用程序中工作。在我的数据集中,我有大约 1500 条记录。使用 for 循环,我需要将这些记录更新到数据库中。循环正确执行。第一次更新了第一条记录。每当循环进入第二行时,什么都不会发生。我没有收到任何错误。

这是我的更新代码

log.Debug("Update Starts..");
            OracleTransaction oraTransaction = BeginTransaction();
            string Zip = string.Empty;
            StringBuilder updateSql = new StringBuilder();
            updateSql.Append("UPDATE STORE SET ");
            updateSql.Append(" LAT = ").Append("'").Append(Latitude).Append("'");
            updateSql.Append(" ,LONG = ").Append("'").Append(Longitude).Append("'");
            updateSql.Append(" ,LOCATION_TYPE = ").Append("'").Append(locationType).Append("'");
            updateSql.Append(" ,UPDATE_TIMESTAMP = ").Append("'").Append(PopulatedDate).Append("'");
            updateSql.Append(" WHERE ");
            updateSql.Append(" STR_ID = ").Append("'").Append(StoreID).Append("'");
            int result =  OracleHelper.ExecuteNonQuery(ConnectionString, CommandType.Text, updateSql.ToString());
            CommitTransaction(oraTransaction);
            EndTransaction(oraTransaction);
            CloseConnection(oracleConnection);
            log.Debug("Update Ends.." + result);
            return 1;
4

2 回答 2

0

你可能想看看这个问题。它完全符合您的需要,但更加高效和安全。按照那里提供的链接了解有关批量操作的更多信息。

于 2013-02-26T12:31:49.803 回答
0

如果您在每个循环中只进行一次更新并且您正在执行 1500 次循环,那么我建议您跳过事务并在每个循环中关闭连接。

log.Debug("Update Starts..");
StringBuilder updateSql = new StringBuilder();
updateSql.Append("UPDATE STORE SET ");
updateSql.Append(" LAT = ").Append("'").Append(Latitude).Append("'");
updateSql.Append(" ,LONG = ").Append("'").Append(Longitude).Append("'");
updateSql.Append(" ,LOCATION_TYPE = ").Append("'").Append(locationType).Append("'");
updateSql.Append(" ,UPDATE_TIMESTAMP = ").Append("'").Append(PopulatedDate).Append("'");
updateSql.Append(" WHERE ");
updateSql.Append(" STR_ID = ").Append("'").Append(StoreID).Append("'");
int result =  OracleHelper.ExecuteNonQuery(ConnectionString, CommandType.Text, updateSql.ToString());
log.Debug("Update Ends.." + result);
return 1;
于 2013-02-26T14:02:24.993 回答