当我调用 ExecuteScalar 时,',' 附近的语法不正确
Incorrect syntax near ',' when i call 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());
真不知道哪里错了:/.
正如其他人所说,您在一行的末尾和下一行的开头有一个逗号:
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();
}
另一种更好的工作方法。
在Sql数据库引擎中,创建一个存储过程,如:
//Defining random datatypes to the parameters as i don't know which should be of which DataType.
create proc sp_InsertUpdate_InterniLozniListS3_Hlavicka
@stredisko int,
@datumNakladky varchar(255),
@smenaNakladky varchar(255),
@hodNakladky varchar(255),
@naklPredak varchar(255),
@cisloLL varchar(255),
@spzVozuTahace varchar(255),
@spzVozuNavesu varchar(255),
@mpz varchar(255),
@mpz2 varchar(255),
@naprTlak varchar(255),
@taraNova varchar(255),
@unosnost varchar(255),
@pocetNapr varchar(255),
@staniceUrceni varchar(255),
@prijemceZbozi varchar(255),
@datNarozeni varchar(255),
@jmenoAPrijmeni varchar(255),
@Podpis varchar(255),
@Vyhotovil varchar(255),
@Vysilal varchar(255),
@Kod varchar(255),
@uvolnenoPrijmeni varchar(255),
@UvolnenoTelefon varchar(255),
@UvolnenoPlaceno varchar(255)
as
begin
if(@stredisko == 0) //Assuming this is Primary key and identity column of the table
begin
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);"
end
else
begin
//Update query here
end
end
然后,在您的 C# 代码中
SqlParameter[] param = new {
new SqlParameter("@stredisko",ValueHereForThisParam),
//add rest the required params here
}
SqlConnection oCon = new SqlConnection(ConnectionString);
SqlCommand oCom = new SqlCommand();
oCom.Connection = oCon;
oCom.CommandType = CommandType.StoredProcedure;
oCom.CommandText = "sp_InsertUpdate_InterniLozniListS3_Hlavicka";
oCom.Parameters.AddRange(param )
oCon.Open();
int i = oCom.ExecuteScalar(); //Will return the added
oCon.Close();
我有一个问题。我知道有一些主题与这个问题相似,但我在这些主题中找不到答案,所以这就是我需要帮助的地方。 我收到了这个查询:
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());
真不知道哪里错了:/.
正如其他人所说,您在一行的末尾和下一行的开头有一个逗号:
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();
}
另一种更好的工作方法。
在Sql数据库引擎中,创建一个存储过程,如:
//Defining random datatypes to the parameters as i don't know which should be of which DataType.
create proc sp_InsertUpdate_InterniLozniListS3_Hlavicka
@stredisko int,
@datumNakladky varchar(255),
@smenaNakladky varchar(255),
@hodNakladky varchar(255),
@naklPredak varchar(255),
@cisloLL varchar(255),
@spzVozuTahace varchar(255),
@spzVozuNavesu varchar(255),
@mpz varchar(255),
@mpz2 varchar(255),
@naprTlak varchar(255),
@taraNova varchar(255),
@unosnost varchar(255),
@pocetNapr varchar(255),
@staniceUrceni varchar(255),
@prijemceZbozi varchar(255),
@datNarozeni varchar(255),
@jmenoAPrijmeni varchar(255),
@Podpis varchar(255),
@Vyhotovil varchar(255),
@Vysilal varchar(255),
@Kod varchar(255),
@uvolnenoPrijmeni varchar(255),
@UvolnenoTelefon varchar(255),
@UvolnenoPlaceno varchar(255)
as
begin
if(@stredisko == 0) //Assuming this is Primary key and identity column of the table
begin
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);"
end
else
begin
//Update query here
end
end
然后,在您的 C# 代码中
SqlParameter[] param = new {
new SqlParameter("@stredisko",ValueHereForThisParam),
//add rest the required params here
}
SqlConnection oCon = new SqlConnection(ConnectionString);
SqlCommand oCom = new SqlCommand();
oCom.Connection = oCon;
oCom.CommandType = CommandType.StoredProcedure;
oCom.CommandText = "sp_InsertUpdate_InterniLozniListS3_Hlavicka";
oCom.Parameters.AddRange(param )
oCon.Open();
int i = oCom.ExecuteScalar(); //Will return the added
oCon.Close();