Domanda

Passo la seguente stringa a un metodo per eseguire un inserto, tuttavia ogni volta che provo a farlo, ottengo un errore.

PropInsert = "INSERT INTO Image_has_Props (Image_ImageID, Props_PropID), SELECT "+IntImageID+", PropID FROM Props WHERE PropDescription = '"+StrPropDescription+"';";
.

Errore

Puoi vedere nell'errore, sembra esserci un extra 'dopo dove dice il monitor della pressione sanguigna.Non ho idea di dove proviene questo extra '.Ottengo la stropropdescription da un jcombobox.

StrPropDescription = propChoice.getSelectedItem().toString();
.

È stato utile?

Soluzione

Penso che tu abbia solo una virgola extra.Prova

PropInsert = "INSERT INTO Image_has_Props (Image_ImageID, Props_PropID) SELECT "+IntImageID+", PropID FROM Props WHERE PropDescription = '"+StrPropDescription+"';";
.

Nota la mancanza di una virgola tra l'inserto e la selezione.

Altri suggerimenti

In primo luogo, generando dichiarazioni SQL direttamente dall'input dell'utente è una cosa pericolosa!

Secondo, potresti voler scaricare il valore di Stropropdescription proprio prima dell'istruzione SQL per assicurarti che abbia il valore che pensi che dovrebbe.

Probabilmente, avrà un'apostrofo alla fine di esso.Quindi è una questione di rintracciare all'indietro dalla fonte per vedere dove / come è stata cambiata la variabile.

L'extra 'Alla fine è solo la citazione attorno all'intera Seltect Syntax, corrispondente a quella prima della selezione.Penso che ci sia un errore dopo selezionare, selezionare 1, PropID "è 1 un nome di colonna?

a) Non è valido SQL.Hai un , in seguito a (Image_ImageID, Props_PropID)TagCode: non termina anche l'istruzione con un ; quando si utilizza il JDBC.

b) Dovresti utilizzare dichiarazioni preparate con segnaposto piuttosto che iniettare l'input per l'utente grezzo nell'istruzione SQL.

Penso che il problema con questa affermazione sia che tu abbia un SELECT 1 nell'istruzione SQL, quando non è un nome di colonna nella tabella, e anche il , tra le istruzioni INSERT e SELECT come altre persone qui hanno menzionato.

Non sono del tutto sicuro dello scopo della tua variabile IntImageID in questo contesto, ma suppongo che tu stia cercando di fare una delle due cose.

1: Stai cercando di ottenere l'immagine from the table, che è una colonna, nel qual caso voleve qualcosa come:

PropInsert = "INSERT INTO Image_has_Props (Image_ImageID, Props_PropID)
             SELECT ImageID, PropID FROM Props 
             WHERE PropDescription = '"+StrPropDescription+"'";
.

o

2: Stai cercando di mettere IntImageID come primo valore di inserimento e il secondo valore viene tirato dal database, nel qual caso, sarebbe qualcosa come il seguente:

PropInsert = "INSERT INTO Image_has_Props (Image_ImageID, Props_PropID)
             ("+IntImageID+", SELECT ImageID, PropID FROM Props 
             WHERE PropDescription = '"+StrPropDescription+"')";
.

Non sono del tutto assolutamente sicuro se ho scritto correttamente il secondo dal momento che non posso testarlo, ma in pratica, implica avere la variabile intimageid separata dall'istruzione Selezione, se non è nella tabella del database. .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top