我有一个问题。我知道有些主题与此问题类似,但是我在这些主题中找不到答案,所以这是我需要的帮助。 我得到了这个查询:
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());
我真的不知道哪里是错误的:/。
答案 0 :(得分:3)
正如其他人所说,您在一行的末尾和下一行的开头有一个逗号:
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();
}
答案 1 :(得分:0)
另一种更好的工作方法。
在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();