如何在sql server中将数据插入自引用表?

时间:2013-02-19 10:41:57

标签: c# sql sql-server

将数据插入自引用表的查询是什么。我的表格有4列:SlNoNameParentIdCurrentBanlance

我尝试过这个SQL查询,但它没有执行,还有其他方法吗?

INSERT INTO Ptr_AcntInfo 
   SELECT 
       '" + txtAcName.Text + "',
       (SELECT [SlNo] FROM Ptr_AcntInfo WHERE [Ac_Nm] = '" + cbxAcntGrpName.Text + "'),"+0.00+""

在此查询中,我收到以下错误。

  

子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

1 个答案:

答案 0 :(得分:3)

查询应如下所示:

"INSERT INTO PTR_ACNTINFO (COL1, COL2)
(SELECT " + txtAcName.Text + ", SINo FROM
PTR_ACNTINFO
WHERE [Ac_Nm]='" + cbxAcntGrpName.Text + "')"

请注意,此查询易受SQL Injection攻击。

http://en.wikipedia.org/wiki/SQL_injection

您应该使用参数化查询或存储过程。

示例:

SQLCommand sqlCommand = new SQLCommand(connection); 
sqlCommand.CommandText =  "INSERT INTO PTR_ACNTINFO (SELECT $name, SINo FROM
                           PTR_ACNTINFO WHERE [Ac_Nm]='$accNo')"

sqlCommand.Parameters.AddWithValue("$name", txtAcName.Text);
sqlCommand.Parameters.AddWithValue("$accNo", cbxAcntGrpName.Text);

http://johnhforrest.com/2010/10/parameterized-sql-queries-in-c/