MySQL insert meerdere rows in een stored procedure

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 21:04
Voor een school opdracht zit ik te dubben hoe ik iets het beste aan kan pakken, eerst een situatie schets:
een fotograaf maakt een foto voor een klant(dit kan ook een groepsfoto zijn maar dat is voor deze scope niet relevant) de Database is MySQL en de clients zijn in Java(dit staat vast en mogen we helaas niet veranderen) De fotos worden op de server opgeslagen als file, in de database staat dus een pad naar de foto(het leek me niet de slimste optie om de foto te converten naar bytes en die opslaan..)

nou wil ik een procedure maken die meerdere fotos in een keer kan inserten zodat je niet voor elke foto een connectie aan hoeft te maken. Echter zijn er twee dingen die mij belemmeren: MySQL kent geen arrays en ook geen split functie, kan dus ook geen csv format als parameter meegeven.

Mijn vraag is hoe ik dit het slimste kan aanpakken. Ik zou in java alle fotos kunnen loopen en voor elke foto een simpele insert aanroepen, maar dit wil ik eigenlijk vermijden. Als er informatie mist hoor ik het wel, het lijkt me niet nuttig om mijn tabelstructuur toe te voegen, aangezien ik niet opzoek ben naar een specifieke oplossing, maar meer hoe jullie zoiets aan zouden pakken.

Beste antwoord (via Marco1994 op 15-03-2016 12:06)


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Kijk eens naar connection pooling. Dan boeit het echt niet meer dat je meer dat je per insert een connectie aanmaakt, dat doet de pool dan namelijk voor je.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

Kijk eens naar connection pooling. Dan boeit het echt niet meer dat je meer dat je per insert een connectie aanmaakt, dat doet de pool dan namelijk voor je.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 21:04
Creepy schreef op dinsdag 15 maart 2016 @ 11:56:
Kijk eens naar connection pooling. Dan boeit het echt niet meer dat je meer dat je per insert een connectie aanmaakt, dat doet de pool dan namelijk voor je.
Top, ga me er eens in verdiepen. Dank

Edit:
Volgens deze tutorial schijnt het niet lastig te zijn en doet het precies wat ik zoek.

[ Voor 22% gewijzigd door Marco1994 op 15-03-2016 12:05 ]


Acties:
  • +1 Henk 'm!

  • epic007
  • Registratie: Februari 2004
  • Laatst online: 25-08 11:27
INSERT support gewoon multiple rows hoor:

SQL:
1
2
3
4
5
6
INSERT INTO tbl_name
    (a,b,c)
VALUES
    (1,2,3),
    (4,5,6),
    (7,8,9);

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
epic007 schreef op vrijdag 18 maart 2016 @ 09:43:
INSERT support gewoon multiple rows hoor:
* RobIII wijst naar topictitel:stored procedure
* RobIII wijst naar tweede alinea van de topicstart
Het probleem is dat je geen array aan een SP kunt doorgeven ;)

[ Voor 20% gewijzigd door RobIII op 18-03-2016 10:56 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Die SP lijkt me niet het doel maar het gekozen middel, en IMO niet eens het beste middel. :P Als je de wens voor een SP overboord gooit is die insert-query prima in een loopje op te bouwen en daar zou ik veel eerder voor kiezen dan een SP, omdat je dan ineens je applicatielogica op twee verschillende plekken uit elkaar zet. Not to mention het feit dat je bij het optuigen van een eventuele nieuwe server weer een extra stap hebt wanneer je eenmaal begint met stored procedures.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
RobIII schreef op vrijdag 18 maart 2016 @ 10:55:
[...]

* RobIII wijst naar topictitel:stored procedure
* RobIII wijst naar tweede alinea van de topicstart
Het probleem is dat je geen array aan een SP kunt doorgeven ;)
Nou ken ik MySQL niet, maar in de meeste RDBMS'en heb je wel iets als een Table Valued Parameters, daarmee kun je wel meerdere rows doorgeven.

Verder wel met NMe dat ik in eerste instantie niet zou kiezen voor een SP.

[ Voor 7% gewijzigd door Woy op 18-03-2016 11:01 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Woy schreef op vrijdag 18 maart 2016 @ 11:00:
Nou ken ik MySQL niet, maar in de meeste RDBMS'en heb je wel iets als een Table Valued Parameters, daarmee kun je wel meerdere rows doorgeven.
AFAIK niet (en een snelle google search zojuist leverde geen recentere positieve hits op dan last time I checked :P ). Er zijn wel creatievelingen die met "workarounds" (lees: doorgaans ontzettend ranzige hacks) op de proppen komen maar die zou ik vooral links laten liggen :P
Woy schreef op vrijdag 18 maart 2016 @ 11:00:
Verder wel met NMe dat ik in eerste instantie niet zou kiezen voor een SP.
Me too; SP's hebben zéker hun nut (en over "applicatielogica" in de DB of applicatie is 't laatste woord nog niet gezegd/geschreven :P ) maar in dit geval maak je 't jezelf alleen maar moeilijk door persé een SP te willen gebruiken.

[ Voor 12% gewijzigd door RobIII op 18-03-2016 11:17 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Op zich niks mis met applicatielogica in je DB, zolang je het maar niet voor elke scheet doet. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 21:04
Om even de keuze voor SP op te helderen, de betreffende sp heet insertPhoto. Deze doet meerdan simpel een tabel inserten, hij insert waarden in 2 andere tabellen op basis van de foto, namelijk in de photographer en album tabel. Zodoende de keuze voor de sp, inmiddels is connection pooling geïmplementeerd en draait het als een zonnetje.

Wat epic007 zegt maakt sense, dom van me om niet even de documentatie door te kijken (iets met tunnelvisie...), voordat ik de vraag stelde vertelde onze productowner/tutor dat we of alles met sp's moeten doen of niets.. 8)7

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Marco1994 schreef op vrijdag 18 maart 2016 @ 18:54:
Om even de keuze voor SP op te helderen, de betreffende sp heet insertPhoto. Deze doet meerdan simpel een tabel inserten, hij insert waarden in 2 andere tabellen op basis van de foto, namelijk in de photographer en album tabel. Zodoende de keuze voor de sp, inmiddels is connection pooling geïmplementeerd en draait het als een zonnetje.
Ik hoor nog steeds een reden om transactions te gebruiken, niet SP's. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1