2017-06-27 5 views
1

zum ersten Mal eine Frage hier stellen, also vergib mir, wenn ich etwas falsch mache.Java-Verbindung zu Postgresql-Datenbank

Ich habe eine Verbindung zu einem postgresql in Java wie folgt:

A Maven XML-Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>SQL_Database</groupId> 
<artifactId>SQL_Database</artifactId> 
<version>1.0-SNAPSHOT</version> 
<dependencies> 
    <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> 
    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>42.1.1</version> 
    </dependency> 

</dependencies> 


</project> 

3 Klassen: Connect.java:

import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.SQLException; 
    import java.util.Properties; 

    public class Connect { 

     private Connection conn; 

     public Connect(){ 
     } 

     public void setConnection(String database, String user, String password){ 
      String format = String.format("jdbc:postgresql://localhost/%s", database); 
      Properties props = new Properties(); 
      props.put("user", user); 
      props.put("password", password); 
      try { 
       this.conn = DriverManager.getConnection(format, props); 
       this.conn.setAutoCommit(true); 
      } catch (SQLException e){ 
       System.out.println(e.getMessage()); 
      } 
     } 

     public Connection getConnection(){ 
      return this.conn; 
     } 

     public void closeConnection() { 
      try { 
       this.conn.close(); 
      } catch (SQLException e) { 
       System.out.println(e.getMessage()); 
      } 
     } 
    } 

Sql.java:

import java.sql.Connection; 
    import java.sql.ResultSet; 
    import java.sql.SQLException; 


    class Sql { 

    private Connection conn; 
    private ResultSet results; 

    public Sql(Connection conn) { 
     this.conn = conn; 
    } 

    public void update(String query) { 
     try { 
      this.conn.prepareStatement(query).executeUpdate(); 
     } catch (SQLException e) { 
      System.out.println(e.getMessage()); 
     } 
    } 

    public void select(String query) { 
     try { 
      this.results = this.conn.prepareStatement(query).executeQuery(); 
      getResults(); 
     } catch (SQLException e) { 
      System.out.println(e.getMessage()); 
     } 
    } 

Und Main.java:

import java.sql.Connection; 

public class Main { 

public static void main(String args[]){ 
    Connect c = new Connect(); 
    c.setConnection("foo", "foo", "foo"); 
    Connection conn = c.getConnection(); 
    Sql sql = new Sql(conn); 
    String query = <Some SQL statement>; 
    sql.update(query); 
    sql.select(<Some SQL statement>); 
    c.closeConnection(); 
    } 
} 

Das funktioniert perfekt, ich Tabellen erstellen können, wählen Sie Material aus diesen Tabellen usw.

Allerdings möchte ich in einem anderen Projekt, diese Verbindung haben, so neu erstellt ich die Connect und SQL-Klassen in diesem Projekt und ich habe die Anweisungen in Main.java zur Hauptklasse im anderen Projekt hinzugefügt.

Ich kann Connect c = new Connect(); tun, und das funktioniert, aber wenn ich versuche, c.setConnection("foo", "foo", "foo"); zu tun, funktioniert es nicht, erkennt Java das c Objekt oder etwas nicht. Gleiches mit sql.

Ich verstehe nicht, warum es in einem Projekt funktioniert, aber wenn ich genau dasselbe in einem anderen Projekt mache, funktioniert es nicht.

Dies ist der Code in meinem Projekt, das nicht funktioniert:

public class Main extends Application { 
    Connect c = new Connect(); 
    c.setConnection("foo", "foo", "foo"); 
    Connection conn = c.getConnection(); 
    Sql sql = new Sql(conn); 
    -- Some other code that works perfectly without the above-- 
    } 

PS. Entschuldigung für die Code-Bombe.

+1

Können Sie uns zeigen Sie den Code aus dem Projekt, das nicht funktioniert? Und fügen Sie die Fehlermeldung ein. –

+0

Ich füge den Code zu meinem Beitrag hinzu. Der Fehler, den ich bekomme, wenn ich es versuche, ist es das: Fehler: (22, 20) Java: erwartet Fehler: (22, 21) Java: illegaler Start des Typs Fehler: (22, 39) Java: illegaler Start von type Error: (22, 48) java: illegaler Start vom Typ – Wouter

+0

Sie haben ' '. Sie benötigen auch Anführungszeichen um die Strings. Wenn das nicht der Fall ist, müssen Sie den eigentlichen Code anstelle von "Pseudo-Code" einfügen, da er sich irgendwo wie ein Schurken-Charakter anhört. –

Antwort

0

Es ist, weil Ihr Code nicht innerhalb einer Methode ist.

Es sollte so etwas sein: -

public class Main extends Application { 

    public void connect() { // <-- Method declaration 
     Connect c = new Connect(); 
     c.setConnection("foo", "foo", "foo"); 
     Connection conn = c.getConnection(); 
     Sql sql = new Sql(conn); 
     //-- Some other code that works perfectly without the above-- 
    } 

} 
+1

Danke! Das hat funktioniert! – Wouter

Verwandte Themen