1

我试图values从我的数据库中插入不同的表,我从不同tables的输入textBox中检索这些值,从 Windows 表单等输入。

但是我的查询语法不正确,我想知道是否可以在一个查询中插入这些输入:

     String query4 = @"INSERT INTO FACFIN 
(Nom_pren_RS,trimestre,exercice,Nb_factures,Prix_total_HT) 
    values 
        ('" + textBox1.Text + "','" + textBox3.Text + "','" + textBox2.Text + "', 
    SELECT cast(count(trimestre) AS varchar(6)) AS Nb_factures FROM facture
     WHERE 
    (facture.Nom_pren_RS='" + textBox1.Text + "'),
SELECT cast(SUM (cast(Prix_vente_HT AS BIGINT ))AS varchar(15)) 
from facture 
where (facture.Nom_pren_RS='" + textBox1.Text + "')    )  ";

我知道存在 sql 注入的风险,并且我知道我必须使用参数,但我只是想测试代码以查看它是否插入,插入的语法可能是错误的

  • nb_factures应该是这样的,varchar(6)所以我投了

  • Prix_vente_HT表中的列facturevarchar所以我将其转换BIGINT为执行 SUM,然后将 SUM 转换为 varchar,因为它Prix_total_HT应该varchar在表FACFIN 中

4

1 回答 1

2

您不能将 select 语句添加到值列表,而是此 select 语句保留您的聚合,但将文本框值带入单个 select 语句。如果您需要从多个表中提取行,您还可以在选择部分执行 UNION。

String query4 = @"INSERT INTO FACFIN (Nom_pren_RS,trimestre,exercice,Nb_factures,Prix_total_HT) 
SELECT '" + textBox1.Text + "','" + textBox3.Text + "','" + textBox2.Text + "', cast(count(trimestre) AS varchar(6)) AS Nb_factures ,
cast(SUM (cast(Prix_vente_HT AS BIGINT ))AS varchar(15)) as Prix_total_HT
FROM facture
WHERE (facture.Nom_pren_RS='" + textBox1.Text + "')";

对于 SQL Server,结果看起来像这样

INSERT INTO FACFIN (Nom_pren_RS,trimestre,exercice,Nb_factures,Prix_total_HT) 
SELECT 
    'TEXT_BOX_1_VALUE','TEXT_BOX_3_VALUE','TEXT_BOX_2_VALUE', 
    cast(count(trimestre) AS varchar(6)) AS Nb_factures, cast(SUM (cast(Prix_vente_HT AS BIGINT ))AS varchar(15)) as Prix_total_HT
FROM facture WHERE (facture.Nom_pren_RS='TEXT_BOX_1_VALUE')
于 2013-07-01T12:03:10.827 回答