login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[c#] oledbcommand

Offline cloudstrife - 14/11/2007 09:57
Avatar van cloudstrifePHP beginner Iemand enig idee hoe je onderstaande code werkende krijgt. De bedoeling is dat ik met 1 oledbcommand object meerdere tabellen kan aanmaken door telkens de commandtext te wijzigen.

  1. private void createTables()
  2. {
  3. OleDbConnection oc = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+locatie+"/"+naam+".mdb");
  4. OleDbCommand ocom = new OleDbCommand();
  5.  
  6. try
  7. {
  8. oc.Open();
  9. ocom.Connection = oc;
  10. ocom.CommandText = "CREATE TABLE tblcheck(carplog text(10), installdatum datetime)";
  11. ocom.ExecuteNonQuery();
  12.  
  13.  
  14. ocom = null;
  15.  
  16.  
  17. }
  18. catch (OleDbException ex)
  19. {
  20. MessageBox.Show("Foutmelding: " + ex.ToString());
  21. }
  22.  
  23. }

5 antwoorden

Gesponsorde links
Offline Mad_Mike - 14/11/2007 10:14
Avatar van Mad_Mike PHP beginner Waar haalt hij de locatie en naam vandaan?
Offline Stijn - 14/11/2007 10:52
Avatar van Stijn PHP expert Gewoon na de execute terug die commandtext maken en terug uitvoeren...
Offline Abbas - 14/11/2007 12:10
Avatar van Abbas Gouden medaille

Crew .NET
Hetgeen je kan doen is een array maken met daarin alle CREATE statements. Daarna met een loop elke keer de volgende tekst kiezen en uitvoeren. Dan krijg je zoiets als dit:
  1. private void createTables()
  2. {
  3. OleDbConnection oc = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+locatie+"/"+naam+".mdb");
  4. OleDbCommand ocom = new OleDbCommand();
  5. string[] commands = new string[4] { "create_een", "create_twee", "create_drie", "create_vier" };
  6.  
  7. for(int i = 0; i <= 3; i++)
  8. {
  9. try
  10. {
  11. oc.Open();
  12. ocom.Connection = oc;
  13. ocom.CommandText = commands[i];
  14. ocom.ExecuteNonQuery();
  15. ocom = null;
  16. }
  17. catch (OleDbException ex)
  18. {
  19. MessageBox.Show("Foutmelding: " + ex.ToString());
  20. }
  21. finally
  22. {
  23. oc.Close();
  24. }
  25. }
  26. }

Hetgeen ik ook wel bij de code bijgezet heb is een finally-blok. Het is goed dat je met try-catch werkt, maar stel dat een keer in de try iets misgaat blijft de verbinding open staan. Daarna gaat hij terug in de loop en probeert hij een verbinding te openen die al open staat en krijg je ook een lelijke fout. Je zou die ook kunnen sluiten in de try denk je dan, maar als het misgaat gaat hij direct naar de catch en sluit hij ze toch niet. Als je meer hierover wil lezen verwijs ik je naar hier: KLIK.
Offline cloudstrife - 14/11/2007 17:40
Avatar van cloudstrife PHP beginner Ja hoe ik meerdere keren die command kan laten uitvoeren weet ik ook wel, het probleem was dat hij de executenonquery() gewoon niet uitvoerde. Het is inmiddels opgelost probleem zat hem bij de catalog waarmee ik de database aanmaak.

Toch bedankt voor de antwoorden.
Offline Abbas - 14/11/2007 20:29
Avatar van Abbas Gouden medaille

Crew .NET
Dan moet je in het vervolg een beetje duidelijker je vraag stellen want wat je anders bedoelde had ik echt niet door! 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.185s