Mein Problem, über vorbereitete Anweisungen in Java:Java vorbereitet wie Anweisung mit einer ganzen Zahl
SELECT TrackingId FROM table where TrackingId = 5735053
TrackingID ist eine Integer-Spalte in der Datenbank. Whe i die Abfrage zu ändern:
SELECT TrackingId FROM table where TrackingId = '5735053'
funktioniert es gut, wie er es automatisch konvertiert. Gleiches gilt für diese Abfrage:
SELECT TrackingId FROM table where TrackingId LIKE '%5735%'
Dies funktioniert gut und die Datenbank findet Ergebnisse. In Java möchte ich den Eingabewert des Benutzers an die Abfrage übergeben. Es arbeitet mit String und dergleichen Aussage aber nicht mit int:
String query = "SELECT AnyString FROM table where AnyString like ?";
connectDatabase();
pstmt = connection.prepareStatement(query);
pstmt.setString(1, "%"+input+"%");
result = pstmt.executeQuery();
Jetzt möchte ich einen Integer durch diese Anweisung übergeben, und ich habe viele Dinge, aber immer 0 Ergebnisse versucht. Also das wird nicht funktionieren:
Aber wenn ich die Abfrage in meinem Datenbank-Programm eingeben funktioniert es gut und er findet Ergebnisse. Kann mir hier jemand helfen?
Haben Sie debuggen, um herauszufinden, was der Wert von 'input' ist? Das scheint mir richtig zu sein. –
Sie könnten versuchen, entweder das Feld zu varchar zu konvertieren: 'cast (AnyInt als varchar)' oder den Parameter: 'cast (? As varchar)'. Ich bin nicht 100% sicher, dass der Parameter von SQL Server unterstützt wird. –
Danke für die Antwort. Deine Antwort ist richtig. Aber ich fand einen Fehler in meinem Java-Code und es funktioniert auch ohne die Besetzung. –