如何将数据插入到sql server中的自引用表中? [复制]

Posted

技术标签:

【中文标题】如何将数据插入到sql server中的自引用表中? [复制]【英文标题】:How to Insert data into self reference table in sql server? [duplicate] 【发布时间】:2013-02-19 10:41:56 【问题描述】:

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

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

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

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

子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。

【问题讨论】:

您的 (select [SlNo] from Ptr_AcntInfo where[Ac_Nm]='" + cbxAcntGrpName.Text + "') 查询将始终返回一个 SlNo? 它显示错误,例如关键字“SELECT”附近的语法不正确。 ')' 附近的语法不正确。 如果您想对问题进行更改,您应该编辑现有问题,而不是发布新问题。 【参考方案1】:

查询应如下所示:

"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/

【讨论】:

感谢您的回复,但它在关键字“SELECT”附近显示错误语法错误。 @NareshJ 我已经更新了我的帖子。将 COL1 和 COL2 替换为您的列名。

以上是关于如何将数据插入到sql server中的自引用表中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何防止将重复数据插入到值为多个的 SQL Server 表中

如何将从 ms 访问表中检索到的记录插入到 sql server 表中?

如何将 Excel 工作表中的行插入 SQL Server 2005 或 oracle

如何将记录插入到 sql server express 数据库表中?

如何将数据表插入到 SQL Server 数据库表中?

sql server如何如何从一个表中提取部分资讯插入到另一表中