2013-07-31 4 views
0

Я разрабатываю jframe для хранения некоторых данных в базе данных с помощью текстовых полей и всего. У меня есть следующий код для подключения к базе данных. Я использую базу данных sqlite.Как получить реальный путь для базы данных?

**Connectdatabase.java** 

    /* 
    * To change this template, choose Tools | Templates 
    * and open the template in the editor. 
    */ 
    package shreesai; 

    import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.SQLException; 
    import javax.swing.JOptionPane; 

    /** 
    * 
    * @author DeepRocks 
    */ 
    public class Connectdatabase { 

     Connection con = null; 

     public static Connection ConnecrDb(){ 

      try{ 
       Class.forName("org.sqlite.JDBC"); 
       Connection con = DriverManager.getConnection("jdbc:sqlite:G:\\Development\\Project\\database\\shreesai.sqlite"); 
       return con; 
      } 
      catch(ClassNotFoundException | SQLException e){ 
       JOptionPane.showMessageDialog(null,"Problem with connection of database"); 
       return null; 
      } 
     } 
}**** 

/* ALL работает нормально с этим, но я хочу, что если я ЭКСПОРТИРОВАТЬ этот проект баночку и моя клиентка ЗАПУСКАЕТСЯ БАНКУ ИЗ РАЗЛИЧНЫХ PATH ТО ???? */

I «ве пытались использовать этот код

public class Connectdatabase { 

    Connection con = null; 

    public static Connection ConnecrDb(){ 

     try{ 
      String dir = System.getProperty("user.dir"); 
      Class.forName("org.sqlite.JDBC"); 
      Connection con = DriverManager.getConnection("jdbc:sqlite:"+dir+"shreesai.sqlite"); 
      return con; 
     } 
     catch(ClassNotFoundException | SQLException e){ 
      JOptionPane.showMessageDialog(null,"Problem with connection of database"); 
      return null; 
     } 
    } 

} 

Даже я попытался это одно:

public class Connectdatabase { 

     Connection con = null; 

     public static Connection ConnecrDb(){ 

      try{ 
       String dir = System.getProperty("user.dir"); 
       String maindir = dir + File.separator + File.separator ; 
       Class.forName("org.sqlite.JDBC"); 
       Connection con = DriverManager.getConnection("jdbc:sqlite:"+maindir+"shreesai.sqlite"); 
       return con; 
      } 
      catch(ClassNotFoundException | SQLException e){ 
       JOptionPane.showMessageDialog(null,"Problem with connection of database"); 
       return null; 
      } 
     } 

    } 

Но НИЧЕГО Я думаю, что должна быть проблема с тем, что двойная обратная косая черта вызывает возвращение dir: G: \ Development \ Project \ database. и мы хотим G: \\ Разработка \\ Project \\ database \\

Любая помощь?

ответ

3

Пути вы пытались не так, но это верно только на вашем компьютере, поэтому, решение легко, принести файл .sqlite внутри src, может быть, вы хотите создать пакет с именем Database, это не требуется, но это лучше.

Если файл .sqlite был внутри источника будет так:

src/shreesai.sqlite

....=DriverManager.getConnection("jdbc:sqlite:src/shreesai.sqlite");

Не хотите абсолютный путь слишком, и избегать использования обратной косой черты с каталогами (\\) из-за разных оконных платформ вместо этого используйте слэш (/).

+0

Но пользовательский путь возврата с обратной косой чертой :( –

+0

Что вы подразумеваете под * user.dir возвращающимся путем с обратной косой чертой *? – Azad

+0

Я использую System.getProperty («user.dir»); для извлечения src. эта вещь возвращает путь с обратными косыми чертами. –