Insert-Abfrage - executeUpdate Rückgabe -1

Ich versuche zum einfügen von Datensätzen in SQL Server mithilfe von jdbc conn (in java).
Ich bin in der Lage, um einen insert in SQL, wenn ich manuell kopieren Sie die Abfrage-Anweisung in der java-Datei. Aber es ist nicht das einfügen von dem code?

Bitte um Hilfe, wo bin ich Begehen Fehler?

           PreparedStatement preparedStatement = null;

        if (conn != null) {                 
            System.out.println("Connection Successful!");             
        } 

        //Create a Statement object
        Statement sql_stmt = conn.createStatement();

         //Create a Statement object
        Statement sql_stmt_1 = conn.createStatement();

        //Result Set for Prouduct Table
        ResultSet rs  = sql_stmt.executeQuery("SELECT MAX(ID), MAX(RG_ID), MAX(WG_ID) FROM " + strDBName + ".[dbo].Product");

        if ( rs.next() ) {     
            //Retrieve the auto generated key(s).     
            intID = rs.getInt(1); 
            intRG_ID = rs.getInt(2); 
            intWG_ID = rs.getInt(3); 
        }

        for (int iCount = 0 ;iCount < arrListLevel_1_Unique.size(); iCount++)
        {

         //Result Set for Prouduct Table


        sql_stmt_1.executeUpdate("\n IF NOT EXISTS(SELECT 1 FROM " + strDBName + ".[dbo].Product WHERE [Name] NOT LIKE '" + arrListLevel_1_Unique.get(iCount) + "') "
                + "\nINSERT INTO " + strDBName + ".[dbo].Product ([Name] ,"
                + "[RG_ID],[WG_ID],[Parent_Product]) "
                + "VALUES ( '" + arrListLevel_1_Unique.get(iCount) + "',"
                + + (intWG_ID + intRowIncrement) + ", " + (intWG_ID + intRowIncrement + 1) + ", 5828)");


        intRowIncrement++ ;
        }

    rs.close();
        sql_stmt.close();
        sql_stmt_1.close();


        //Close the database connection
        conn.close();
  • Bitte helfen Sie. Dank
  • können Sie extrahieren Sie Ihre SQL-Abfrage und nur posten, dass? Zu viel code, denke ich.
  • Wenn Sie helfen wollen, du brauchen Sie zu reduzieren, den code in das kleinstmögliche fragment veranschaulicht, das problem
  • Hi Alle, ich bearbeitet den code für die Lesbarkeit. Ist sql_stmt_1.executeUpdate (); ist nicht der richtige Anruf zum einfügen von Daten in sql-Tabelle ?
  • Sie haben NOT EXISTS und WHERE Name NOT LIKE. Sind Sie sicher, dass Sie brauchen, sowohl negative?
  • Ich hatte es für zusätzliche Validierung. Aber der insert-Abfrage, wenn ich im query analyzer aus, es funktioniert. Dadurch wird es nicht einfügen in die Tabelle.Dank
  • Dann versuchen Sie es mit executeQuery, nicht executeUpdate. Nicht sicher, welche Methode akzeptiert die IF EXISTS... - Anweisung.
  • Wenn ich nicht verwenden, WENN es VORHANDEN ist, wie der bessere Weg, um zu überprüfen, ob der Datensatz mit der [Name] nicht vorhanden ist und legen Sie es. Ich habe versucht, mit ExecuteQuery, es zeigten Ausnahme "com.microsoft.sqlserver.jdbc.SQLServerException: Die Aussage, nicht mit einem ResultSet zurückgegeben." Dank
  • überprüfen Sie meine Antwort für die Beseitigung der IF EXISTS
  • lassen Sie uns weiter, diese Diskussion im chat

InformationsquelleAutor Ramm | 2011-07-18
Schreibe einen Kommentar