【问题标题】:asp.NET C# - Problems with ExecuteNonQuery() with Oracle Commandsasp.NET C# - 使用 Oracle 命令的 ExecuteNonQuery() 问题
【发布时间】:2012-09-17 10:36:27
【问题描述】:

我的查询遇到了这个问题,我正在使用 Oracle 命令和参数。我的代码中有数百个其他查询,但只有这个无法执行。这是一个非常简单的更新查询,它可以在 SQL Navigator 中使用,因为我尝试过。

在代码中,执行非查询方法似乎冻结了,我的网页中出现“等待 http://localhost:8081/MaintainUserProfile.aspx”。

感谢您的帮助,因为我在这方面浪费了很多时间,而且在这个阶段我一无所知。

如果我应该说明更多信息,请告诉我。

下面的代码(请注意我使用 oracle 参数,但在这种情况下,我只是使用纯字符串来调试问题,oracle 参数也会发生同样的情况,它会卡在执行非查询):

string sqlQuery = @"UPDATE schema_name.table_name
                    SET
                       officer_name = '" + fullName + 
                       "', channel_code = " + channelCode +
                       ", male_female_ind = '" + maleFemale + 
                       "', user_status_code = '" + userStatusCode +
                       "', identity_number = '" + idNumber +
                       "', extension_number = " + extensionNumber +
                       " WHERE user_profile_id = " + userProfileID;

 OracleCommand oraCommand2 = new OracleCommand(sqlQuery, db);
 oraCommand2.ExecuteNonQuery();

【问题讨论】:

  • @Justing Harvey - 我没有收到任何错误,它无法执行并且仍然像正在执行一样,我最终无休止地等待。
  • 该表中有多少数据?我想知道它是否有可能只是为了找到要更新的行而挂起。
  • @Justing Harvey - 这应该更新一行,它正在从大约 1,200 个用户的列表中更新一个用户。
  • @Justin Harvey - 话虽如此,不同页面中的类似更新查询可以完美运行,不会挂起。这很有趣。
  • 您完全确定是挂起的 SQL 而不是 aspx 页面请求中的其他内容吗?

标签: c# oracle


【解决方案1】:

您可以尝试使用此代码 - 基于 AddWithValue

oraCommand2.CommandText="UPDATE schema_name.table_name SET
                       officer_name = :fullName , channel_code = :channelCode, 
                       male_female_ind = :male_female_ind, user_status_code = :user_status_code,
                       identity_number = :idNumber, extension_number = :extensionNumber 
                       WHERE user_profile_id = :userProfileID";

oraCommand2.Parameters.AddWithValue(":fullName", fullName);
oraCommand2.Parameters.AddWithValue(":channelCode", channelCode);
oraCommand2.Parameters.AddWithValue(":male_female_ind", male_female_ind );
oraCommand2 .Parameters.AddWithValue(":user_status_code", user_status_code );
oraCommand2 .Parameters.AddWithValue(":identity_number", identity_number );
oraCommand2 .Parameters.AddWithValue(":extension_number", extension_number );
oraCommand2 .Parameters.AddWithValue(":user_profile_id", user_profile_id );

链接:http://msdn.microsoft.com/fr-fr/library/system.data.oracleclient.oracleparametercollection.addwithvalue.aspx

【讨论】:

  • Yaoub - 你确定在 Oracle Commands API 中有 AddWithValue,我只能看到和 Add 方法。这就是我通常的工作方式,但仍然无法解决: OracleParameter oraParamater6 = new OracleParameter(":param6", OracleDbType.Varchar2, 10); oraParamater6.Value = idNumber; oraCommand.Parameters.Add(oraParamater6);
  • Ryan 你可以阅读这个链接:msdn.microsoft.com/fr-fr/library/…
【解决方案2】:

Kenneth 在这个 Post 中回答了这个问题,这可能是由于 SQLDeveloper 中未提交的操作(或任何其他未提交的挂起数据库更改)。

【讨论】:

    猜你喜欢
    • 2011-07-19
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多