我正在尝试将不同的values
插入到我的数据库的表中,我从不同的tables
中检索这些值,从Windows窗体中的textBox
输入等。
但我的查询语法不正确,我想知道是否有可能在一个查询中插入这些输入:
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
中的列facture
为varchar
,因此我将其投放
到BIGINT
执行SUM然后将SUM转换为varchar
因为表格中的Prix_total_HT
应为varchar
FACFIN
答案 0 :(得分:2)
您不能将select语句添加到值列表,而是使用select语句保留您的aggrigates但将文本框值带入单个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')