2009-07-14 106 views
0

好吧,这看起来很简单,但我找不到解决方案来挽救我的生命。我正在尝试在Oracle数据库上执行一个非常简单的INSERT查询。我可以在TOAD中使用与代码中使用的凭据相同的凭据登录数据库,并且可以毫无问题地运行INSERT,因为我可以判断凭据没有权限问题,查询本身在语法上是正确的。当我尝试运行下面的代码时,它只是挂起。没有错误或任何东西。我可以看到会话在TOAD中弹出,只要我可以告诉代码建立连接没有问题。这里是代码:查询挂起

 String connStr = "Data Source=DB;User id=<USER>;Password=<PASSWORD>;"; 
     String query = "INSERT INTO table (fields) VALUES (values)"; 

     OracleConnection conn = new OracleConnection(connStr); 
     conn.Open(); 
     OracleCommand cmd = conn.CreateCommand(); 
     cmd.CommandText = query; 
     cmd.CommandType = CommandType.Text; 
     cmd.ExecuteNonQuery(); 
     conn.Close(); 
     conn.Dispose(); 

我也尝试使用ADO连接,并得到了相同的结果。任何想法都表示赞赏。

+0

是数据库中的新行,即使它挂起? – northpole 2009-07-14 18:01:51

+0

对不起,我应该提到这一点。不是这样。 – EBGreen 2009-07-14 18:05:28

回答

3

您是否承诺或回滚了Toad中的交易?您的应用程序可能正在等待由Toad创建的会话持有的锁定。

0

你是否试过在事务中包装它,并在插入后明确提交? IIRC,与SQL Server不同,Oracle的默认语义是非常面向事务的。

+0

我会试试这个。如果你有代码可以帮助。无论我会在网络上徘徊,看看我能否找到一个例子。 – EBGreen 2009-07-14 18:06:05