c# - Join Query in ACCESDB giving a IndexOutOfRangeException error -
i'm sure table names ok. want list of players of each team.
public list<speler> getspelersperploeg(int ploegid) { list<speler> spelerslijst = new list<speler>(); connection.open(); oledbcommand command = new oledbcommand("select * proj1speler inner join proj1ploeg on proj1speler.ploegid = proj1ploeg.ploegid proj1ploeg.ploegid = @ploegid", connection); command.parameters.add(new oledbparameter("@ploegid", ploegid)); oledbdatareader datareader = command.executereader(); while (datareader.read()) { spelerslijst.add(new speler((int)datareader["spelerid"], datareader["spelernaam"].tostring(), (int)datareader["ploegid"], datareader["ploegnaam"].tostring(), (int)datareader["spelertypeid"])); } datareader.close(); connection.close(); return spelerslijst; }
it trows error ploegid on line " spelerslijst.add(new speler((...", ideas?
and funny thing sql server works without problem, maybe relations in acces wrong?
you joining 2 tables using *, in way fields both tables returned query.
but happens when have 2 fields same name 2 different tables in same query? automatic renaming occurs, tablename added 2 identical field names disambiguate column name.
so when try use simple name (without table name) error. bet culprit "ploegid" field appears in both tables.
i suggest return field names required code
oledbcommand command = new oledbcommand(@"select ps.spelerid, ps.spelernaam, pp.ploegid, pp.ploegnaam, ps.spelertypeid proj1speler ps inner join proj1ploeg pp on ps.ploegid = pp.ploegid pp.ploegid = @ploegid", connection); command.parameters.add(new oledbparameter("@ploegid", ploegid)); oledbdatareader datareader = command.executereader();
(note, not sure field contained in table, idea)
Comments
Post a Comment