好的,这看起来很简单,但我找不到解决方案来挽救我的生命。我试图在Oracle DB上进行一个非常简单的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 :(得分:3)
您是否已在Toad中提交或回滚交易?您的应用程序可能正在等待Toad创建的会话所持有的锁定。
答案 1 :(得分:0)
您是否尝试将其包装在事务中并在插入后显式提交? IIRC,Oracle的默认语义非常依赖于事务,与SQL Server不同。