首页 > 解决方案 > 当我调用 ExecuteScalar 时,',' 附近的语法不正确

问题描述

我有个问题。我知道有一些主题与这个问题相似,但我无法在这些主题中找到答案,所以这就是我需要帮助的地方。我得到了这个查询:

 SqlCommand cmd = new SqlCommand(@"INSERT INTO InterniLozniListS3_Hlavicka(Stredisko, DatumNakladky, SmenaNakladky, HodNakladky, 
                           NaklPredak, CisloLL, SpzVozuTahace, SpzVozuNavesu, Mpz, Mpz2, NaprTlak, TaraNova, Unosnost, PocetNaprav, StaniceUrceni,
                           , PrijemceZbozi, DatNarozeni, JmenoAPrijmeni, Podpis, Vyhotovil, Vysilal, Kod, UvolnenoPrijmeni, UvolnenoTelefon, UvolnenoPlaceno) 
                           OUTPUT INSERTED.ID
                           VALUES
                            (@stredisko, @datumNakladky, @smenaNakladky, @hodNakladky, @naklPredak, @cisloLL, @spzVozuTahace, 
                            @spzVozuNavesu, @mpz, @mpz2, @naprTlak, @taraNova, @unosnost, @pocetNapr, @staniceUrceni,@prijemceZbozi,
                            @datNarozeni, @jmenoAPrijmeni, @Podpis, @Vyhotovil, @Vysilal, @Kod, @uvolnenoPrijmeni, @UvolnenoTelefon, @UvolnenoPlaceno)
                          ;", connection);

我想我有这个 INSERT 权利,但是如果我启动应用程序并调试它会在这里结束

    return long.Parse(cmd.ExecuteScalar().ToString());

我真的不知道哪里出错了:/。

标签: c#sqlsqlcommand

解决方案


正如其他人所说,您在一行的末尾和下一行的开头都有一个逗号:

StaniceUrceni,
, PrijemceZbozi

因此,您应该始终使用相同的逗号策略,无论是在开头还是结尾:

string sql = @"
INSERT INTO InterniLozniListS3_Hlavicka(
    Stredisko,  DatumNakladky,  SmenaNakladky, HodNakladky, NaklPredak, 
    CisloLL, SpzVozuTahace, SpzVozuNavesu, Mpz, Mpz2, NaprTlak, TaraNova, 
    Unosnost, PocetNaprav, StaniceUrceni, PrijemceZbozi, DatNarozeni, 
    JmenoAPrijmeni, Podpis, Vyhotovil, Vysilal, Kod, UvolnenoPrijmeni, 
    UvolnenoTelefon, UvolnenoPlaceno) 
OUTPUT INSERTED.ID
VALUES (
    @stredisko, @datumNakladky, @smenaNakladky, @hodNakladky, @naklPredak, 
    @cisloLL, @spzVozuTahace, @spzVozuNavesu, @mpz, @mpz2, @naprTlak, @taraNova,
    @unosnost, @pocetNapr, @staniceUrceni,@prijemceZbozi, @datNarozeni, 
    @jmenoAPrijmeni, @Podpis, @Vyhotovil, @Vysilal, @Kod, @uvolnenoPrijmeni, 
    @UvolnenoTelefon, @UvolnenoPlaceno);"

如您所见,避免水平滚动也很有帮助。

using(var cmd = new SqlCommand(sql, conection))
{
    return (long) cmd.ExecuteScalar();
}

推荐阅读