Я хотел бы выбрать все строки, в которых соответствуют артиклиды и где id - определенный int. Это мой код:C# sql select строка запроса с параметрами
public CZaposleni ucitajZaposlenog(int idZap)
{
CZaposleni zap = new CZaposleni();
string queryString =
"SELECT zap.ZapId, zap.SifraRadnika, zap.Ime, zap.Prezime, zap.Pol, zap.JMBG, zap.BrKnjizice, zap.StrucnaSprema, zap.DatumRodjenja, zap.DatumRodjenja, zap.DatumZaposlenja, zap.MestoRodjenja, zap.Prebivaliste, zap.Kontakt1, zap.Kontakt2, " +
"rad.RmId, rad.Naziv, rad.Sifra " +
"FROM T_Zaposleni zap, T_RadnaMesta rad " +
"WHERE zap.ZapId = @Id AND zap.RadnoMestoId = rad.RmId;";
using (SqlConnection connection = new SqlConnection(_connectionString))
{
SqlCommand command = connection.CreateCommand();
command.CommandText = queryString;
command.Parameters.Add(new SqlParameter("@Id", idZap));
connection.Open();
command.ExecuteNonQuery();
using (SqlDataReader reader = command.ExecuteReader())
{
zap = new CZaposleni();
zap.Sifra = reader["SifraRadnika"].ToString();
zap.Ime = reader["Ime"].ToString();
zap.Prezime = reader["Prezime"].ToString();
zap.Pol = Char.Parse(reader["Pol"].ToString());
zap.JMBG = reader["JMBG"].ToString();
zap.Brknjizice = reader["BrKnjizice"].ToString();
zap.SS = reader["StrucnaSprema"].ToString();
zap.DatumR = DateTime.Parse(reader["DatumRodjenja"].ToString());
zap.DatumZ = DateTime.Parse(reader["DatumZaposlenja"].ToString());
zap.Mestorodj = reader["MestoRodjenja"].ToString();
zap.Prebivaliste = reader["Prebivaliste"].ToString();
zap.Kontakt1 = reader["Kontakt1"].ToString();
zap.Kontakt2 = reader["Kontakt2"].ToString();
zap.Radnomesto = new CRadnaMesta();
zap.Radnomesto.ID = Int32.Parse(reader["RmId"].ToString());
zap.Radnomesto.Naziv = reader["Naziv"].ToString();
}
}
return zap;
}
Я получаю эту ошибку:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll Additional information: Invalid attempt to read when no data is present.
Похоже, @Id никогда не будет изменен с фактическим параметром в строке запроса.
Может ли кто-нибудь указать мне? Спасибо.
В дополнение к ответам ниже вы также выполнение запроса в два раза , и с командой 'command.ExecuteNonQuery();' и снова с 'command.ExecuteReader()' – Fermin
В следующий раз сначала ваше сообщение об ошибке google;) –
@TimSchmelter Я понимаю, что означает ошибка. – Morsus