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;
            }
        }
}****

/* これですべてが正常に動作しますが、このプロジェクトを JAR にエクスポートすると、クライアントが別のパスから JAR を実行するようになるのでしょうか????*/

このコードを使ってみました

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;
            }
        }

    }

しかし、二重のバックスラッシュがディレクトリを返すことに問題があるに違いないと思います:G:\Development\Project\database。G:\\Development\\Project\\database\\ が必要です

何か助けはありますか?

4

1 に答える 1

3

あなたが試された方法は間違っていませんが、それはあなたのコンピュータ上でのみ正しいので、解決策は簡単です..sqliteファイルを.srcDatabase

ファイル.sqliteがソース内にある場合は、次のようになります。

src/shreesai.sqlite

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

絶対パスも必要ありません。\\ウィンドウ プラットフォームが異なるため、directory( )でバックスラッシュを使用しないでください/。代わりに slash( ) を使用してください。

于 2013-07-31T18:53:59.597 に答える