0

我正在尝试将新记录添加到数据库中。

代码最初是

rsGroup.Open(ftSQL, Global.gADOConnection, false);
rsGroup.AddNew();

rsGroup["PANELIST_NUM"] = flPanelistNum;
rsGroup["USER_CREATED"] = Global.glUserNumberID;

在 rsGroup.AddNew() 上发生初始错误时 - 列 PANELIST_NUM 不允许空值。
这是因为它是主键。

为了解决这个问题,我尝试使用插入方法-

strInsert1 = "INSERT INTO PANELIST_HEADER (PANELIST_NUM, USER_CREATED) VALUES (" + flPanelistNumber + "," + Global.glUserNumberID + ")";

System.Data.OracleClient.OracleCommand cmdCommand = new
System.Data.OracleClient.OracleCommand();

cmdCommand.CommandText = strInsert1;
cmdCommand.Connection = Global.gADOConnection;
cmdCommand.ExecuteNonQuery();

当我运行它时,我没有收到错误,但它会在无限循环中继续,并且永远不会在 ExecuteNonQuery 命令之后进入下一行代码。是否有原因导致它陷入循环和/或是否有另一种方法可以让我成功将此记录添加到数据库中?

4

1 回答 1

1

如果 ExecuteNonQuery 方法挂起,听起来几乎就像是在数据库上获得了一个锁(或者之前调用的锁尚未释放)。它真的不可能是无限循环,因为您的代码(至少您发布的片段)没有循环。

此外,将 INSERT 语句参数化是非常可取的,因为所示代码容易受到 SQL 注入攻击。

于 2012-08-07T20:26:30.380 回答