c# - 当我尝试使用 C# 在 Oracle 数据库中使用占位符更新时间戳列时,应用程序冻结
问题描述
我正在尝试使用 C# 更新 Oracle 数据库中的 2 列。我要更新的列StartTime
是时间戳和Name
字符串。但是,当我运行我的代码时,应用程序会冻结。我以下是我的代码:
public int StartProduction(string serialNr, string empName)
{
string queryString = "UPDATE RO_EXEMPLAAR_PIM SET PLAKTAFEL_START=systimestamp, STARTED_BY=:startedBy WHERE SERIENR=:serialNr";
using (OracleConnection connection = new OracleConnection(connectionString))
{
using (OracleCommand command = new OracleCommand(queryString, connection))
{
try
{
OracleDataAdapter da = new OracleDataAdapter();
connection.Open();
command.Parameters.AddWithValue("serialNr", serialNr);
command.Parameters.AddWithValue("startedBy", empName);
da.InsertCommand = command;
int nrOfRecordsChanged = command.ExecuteNonQuery();
return nrOfRecordsChanged;
}
catch
{
return -1; //which means the try-block was not executed succesfully
}
finally
{
connection.Close();
}
}
}
}
我以这样的形式称呼它:
if (dh.StartProduction(serialNr, empName) != -1)
{
MessageBox.Show("Production started successfully!");
}
else
{
MessageBox.Show("Production cannot be started!");
}
我在网上查了一下,找不到我的代码有什么问题。提前致谢!
解决方案
尝试非锁定读取查询,例如;
SELECT * FROM V$VERSION;
如果可行(证明您的连接字符串有效)。
那么你可能有一个锁定问题。
一般来说:(特别是对于开发人员)
确保您没有错过“提交”;在您的 sql-developer 或 dbvisualizer 或类似的东西中。(或您的开发团队中的某个人)。在没有“提交”的情况下运行更新;在里面这些工具会锁定一行。
如果您找不到罪魁祸首:重新启动服务器即可。
推荐阅读
- scala - 如何在火花中将数据集 [行] 保存为文本文件?
- python - 使用 Numpy Array 遍历 .txt 文件中的时间序列数据
- maven - 运行 wildfly:run 目标后,有没有办法使用 maven build 进行处理?
- php - Polylang 翻译网址 slug 无法正常工作
- python - 如何将嵌套字典列表转换为 pandas 数据框?
- python - 如何在熊猫中滚动非重叠窗口
- c# - 避免对具有可为空类型/字段的泛型发出警告的最佳方法?
- c++ - 循环内的局部对象的析构函数是否保证在下一次迭代之前被调用?
- amazon-web-services - EKS / AWS 中的 Hazelcast 主节点选举是可能的吗?
- javascript - createObjectURL blob url 在 Chrome 中不安全