【发布时间】:2011-03-12 09:05:29
【问题描述】:
这是代码(删除了服务器/密码等)
public int SetUploadedInESIDatabase(string ID)
{
using (var oOracleConn = new OracleConnection())
{
oOracleConn.ConnectionString =
@"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=<ip>)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<dbname>)));User Id=<user>;Password=<password>;";
var cmd =
new OracleCommand(
"UPDATE FOO_ACCESS SET PIMAGE ='-1' WHERE CODE= '" + ID + "'", oOracleConn);
oOracleConn.Open();
return cmd.ExecuteNonQuery();
}
}
这段代码的效果是它永远不会超过 return 语句。没有返回错误(即使是一夜之间)
我不是数据库专家,但我们的 DBA 说连接被锁定(或者行可能......)他杀死了锁定连接,但是当我运行代码时它仍然被锁定。
关于要求 Oracle 更新一行,我做错了吗?
我意识到我应该使用参数化查询,但我遇到了问题,需要一些简单的东西! 如果我从 cmd 中复制构建的命令。使用调试器并使用 SQL Developer 运行它然后它可以工作(尽管有时它也会锁定)
我可以随意从数据库中选择。
我不确定这是正常现象还是与我们的环境有关,因此我们很乐意接受任何帮助!
【问题讨论】:
-
哇,这真的是 C# 中的 Oracle 连接字符串的样子吗?相比之下,它实际上使 Oracle 的 Java 连接字符串看起来不错!
-
@ R. Bemrose:如果您不使用 Oracle TNSNAMES.ORA 文件为服务器提供友好名称,那么这只是连接字符串的样子。否则,使用 TNSNAMES 看起来会更好:
Data Source=ServerName; User Id=user; Password=pw. -
@R. Bemrose:Oracle 支持不同的连接字符串格式connectionstrings.com/oracle#p12
-
@LBushkin:我知道这就是 tnsnames.ora 的样子,我只是从未见过一种编程语言将它用于驱动程序连接字符串而不是它自己的格式。
-
@R.Bemrose:如果您愿意,可以指定连接字符串到 SQL*Plus。它与 C# 无关。
标签: c# oracle database-connection