2016-07-10 3 views
0

Ich habe die Anweisungen im Wiki (https://code.google.com/archive/p/libgdx-users/wikis/SQLite.wiki) befolgt, aber ich bin mir nicht sicher, wie man die DB-Verbindung tatsächlich verwendet. Ich habe das jdbc Tutorial unter http://www.tutorialspoint.com/jdbc/jdbc-sample-code.htm angeschaut und ich denke ich stecke auf der Verbindung fest.Wie erstelle ich eine jdbc sqlite Verbindung basierend auf einem ActionResolver?

Der Resolver-Code

public interface ActionResolver { 
public Connection getConnection(); 
} 

public class DesktopActionResolver implements ActionResolver { 
public Connection getConnection() { 
    String url = "jdbc:sqlite:db.sqlite"; 
    try { 
     Class.forName("org.sqlite.JDBC"); 
     return DriverManager.getConnection(url); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 
} 

public class AndroidActionResolver implements ActionResolver { 

Handler uiThread; 
Context appContext; 

public AndroidActionResolver(Context appContext) { 
    uiThread = new Handler(); 
    this.appContext = appContext; 
} 

@Override 
public Connection getConnection() { 
    String url = "jdbc:sqldroid:/data/data/com.myapp/databases/db.sqlite"; 
    try { 
     Class.forName("org.sqldroid.SQLDroidDriver").newInstance(); 
     return DriverManager.getConnection(url); 
    } catch (InstantiationException e) { 
     Log.e("sql", e.getMessage()); 
    } catch (IllegalAccessException e) { 
     Log.e("sql", e.getMessage()); 
    } catch (ClassNotFoundException e) { 
     Log.e("sql", e.getMessage()); 
    } catch (SQLException e) { 
     Log.e("sql", e.getMessage()); 
    } 
    return null; 
} 
} 

Die jdbc Tutorial hat

conn = DriverManager.getConnection(DB_URL,USER,PASS);

Kann jemand erklären oder mich in die richtige Richtung weisen, wie die Verbindung von den ActionResolvers zu benutzen?

Was muss ich tun, damit der Conn im Rest meines Codes verfügbar ist?

Ich würde denken, dass es so etwas wie

Connection conn = ActionResolver.getConnection();

wäre es aber das ist es nicht.

+0

Ich verstehe nicht, was Ihre Frage ist. Sie haben einen Code, funktioniert das nicht? Und wenn ja, wie geht es nicht? –

+0

@ mark-rotteveel 'Verbindung conn = ActionResolver.getConnection();' ist nicht gültig. Es ist, was ich erwarten würde, aber ich denke, da ist noch etwas anderes, was passieren muss. Meine Frage ist, wie man die Verbindung herstellt. – Sym

Antwort

0

Nach etwas Versuch und Irrtum und viel Lesen habe ich das zur Arbeit bekommen. Hier ist der Code

MyGame.java

public class MyGame extends Game { 
    public ActionResolver actionResolver; 

    public MyGame(ActionResolver actionResolver) { 
     super(); 
     this.actionResolver = actionResolver; 
    } 

    public void create() { 
     Connection conn = actionResolver.getConnection(); 
     try { 
      Statement statment = conn.createStatement(); 
      ResultSet resultSet = statment.executeQuery("select * from items"); 
      while (resultSet.next()) 
      { 
       System.out.println(resultSet.getString("name")); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

AndroidLauncher.java Änderung

initialize(new MyGame(), config); 

zu

initialize(new MyGame(new AndroidActionResolver(this.getBaseContext())), config); 

DesktopLauncher.java Änderung

new LwjglApplication(new MyGame(), config); 

zu

new LwjglApplication(new MyGame(new DesktopActionResolver()), config); 
Verwandte Themen