1

自己参照テーブルにデータを挿入するためのクエリは何ですか。私のテーブルには4つの列があります:SlNo、、、。NameParentIdCurrentBanlance

このSQLクエリを試しましたが、実行されません。別の方法はありますか?

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

このクエリでは、以下のエラーが発生します。

サブクエリは複数の値を返しました。サブクエリが=、!=、<、<=、>、> =の後に続く場合、またはサブクエリが式として使用される場合、これは許可されません。

4

1 に答える 1

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/

于 2013-02-19T10:44:59.410 に答える