【发布时间】:2016-05-23 09:01:30
【问题描述】:
我想选择所有与 artiklids 匹配且 id 为特定 int 的行。这是我的代码:
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;
}
我收到此错误:
System.Data.dll 中出现“System.InvalidOperationException”类型的未处理异常 附加信息:不存在数据时尝试读取无效。
似乎@Id 永远不会随着查询字符串中的实际参数而改变。
谁能指出我? 谢谢。
【问题讨论】:
-
除了下面的答案之外,您还要执行两次查询,一次是使用
command.ExecuteNonQuery();,一次是使用command.ExecuteReader() -
下次先用谷歌搜索你的错误信息;)
-
@TimSchmelter 我明白错误的含义。
标签: c# sql query-parameters