DB-Probleme



  • Hall C/C++ Forum!
    Ich habe in einem ArrayList oder Vector
    Strings und int-werte(int über die Wrapper-Klasse),
    die ich aus einer Textdatei zuvor ausgelesen habe
    und nun möchte damit eine Access-DB füllen und habe
    mit der Funktion unten Probleme.
    v.elementAt(i) anstelle String a und String b geht nicht
    bei der Insert-Anweisung
    Hat jemand eine Idee wie soetwas geht???

    public void einfuegen() 
         {
          String url = "jdbc:odbc:xyz";
          String user = "";
          String password = "";
          try
            {
              Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            }
            catch(Exception ex){}
    
            Vector v = new Vector();
            //oder ArrayList       
    
            for(int i=0; i<v.size(); i++)
            {	
            String sql = "INSERT INTO Test VALUES(int zahl,String a,String b);"; 
    
            java.sql.Connection con = null; 
            try 
            {   
              con = DriverManager.getConnection(url, user, password); 
              Statement stmt = con.createStatement(); 
              stmt.executeUpdate(sql);
            } 
            catch (Exception e){}     
           }
         }
    


  • Du musst deinen SqlString nicht noch mit Typen versehen. Trage bei Values einfach die Werte der Variablen ein, so wie sie von der DB verstanden werden und gut ist.



  • okay,

    ich hoffe die methode schaut anders aus in wirklichkeit

    weil new Vector()

    und dann den vector durchzählen (der ja leer ist) bringt nicht viel

    auf jeden fall

    so sollte ein insert aussehen:

    Insert into Tabelle values (1,'string1','string2',1.0,NULL)

    bitte notieren: strings innerhalb ''

    probier das mal

    gomberl



  • Zunächst danke für die Vorschläge.
    Mit anderen Worten lese ich eine Textdatei aus,
    die etwa so afgebaut ist.
    Und es sollen immer die Werte

    Ereignisnr = 259
    Name = Basketball
    Beschreibung = WM

    Ereignisnr = 111
    Name = Boxen
    Beschreibung = WBC

    259 Basketball WM
    111 Boxen WBC

    Datensatz für Datensatz
    eingefügt werden.



  • okay
    ich gehe davon aus du hast einen vector der aus datenobjekten besteht
    jedes datenobjekt hat folgende eigenschaften
    Ereignisnr,Name,Beschreibung

    das heisst folgendermassen kommst du an das ziel (davon ausgehend dein vector ist richtig gefuellt)

    //ich mach es mit vector.size() so wie du auch wenn ein iterator besser waere
    //ein ganz simples schnell zusammengedachtes loesungsbeispiel

    for(int i=0; i < myvector.size(); i++){
       MyDataObjectType CurrentObject = (MyDataObjectType) myvector.get(i);
    
       sql = "INSERT INTO Tabelle values (" + CurrentObject.EreignisNr + ",'" + CurrentObject.Name + "','" + CurrentObject.Beschreibung + "')";
    
       .... // ausfuehren der query
    }
    

    gomberl



  • Dieser Code unten liefert keinen Fehler. Allerdings fügt er aber auch
    keine Datensätze in die Datenbank

    public void einfuegen() 
         {
    
          String url = "jdbc:odbc:Deney";
          String user = "";
          String password = "";
    
               try
            {
              Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            }
            catch(Exception ex){}
    
            Vector v = new Vector();
            v.add("qWWWWW");
            v.add("qCCCC");
            v.add("qGGGGG");
         String sql = "INSERT INTO Test VALUES(";
         int lastElem = v.size() - 1;
         for (int i = 0; i < lastElem ; i++)    
         {
         	       sql += "'" + v.get(i).toString() + "',";    
         }
         sql += "'" + v.get(lastElem).toString() + "');";
         System.out.println("Test:" + sql);
         java.sql.Connection con = null;    
         try
          {
          	 con = DriverManager.getConnection(url, user, password);
          	Statement stmt = con.createStatement();
          	  stmt.executeUpdate(sql);    
         }
         catch (Exception e)    
         {
         	       System.out.println(e.getMessage());    
          } 
          }
    


  • tjaja, das liegt dann wohl an:

    String user = "";
        String password = "";
    

    🙄
    😃 😃 😃



  • bitte löschen... 😮



  • bitte löschen... 😮


Anmelden zum Antworten