1

この同様の問題について一日中ドキュメントを検索していますが、答えが見つからないようです。サーバー クライアント モード (org.apache.derby.jdbc.ClientDriver) のデータベースは簡単に見つかりましたが、組み込みモード (org.apache.derby.jdbc.EmbeddedDriver) の結果のデータベースについては混乱しました。

すべて問題ないようで、データベースへの接続は成功していますが、常に次のエラーが表示されます。

java.sql.SQLSyntaxErrorException: テーブル/ビュー 'APP.TABELJEMBATAN' が存在しません。

http://i1263.photobucket.com/albums/ii633/lindafitriani/javadb4.jpg

私のデータベースは存在します。以下を参照してください。

http://i1263.photobucket.com/albums/ii633/lindafitriani/javadb1.jpg
http://i1263.photobucket.com/albums/ii633/lindafitriani/javadb2.jpg

私のderby.logファイルの内容は次のとおりです。

2012-06-30 18:08:34.170 GMT: Derby バージョンの起動 - Apache Derby - 10.5.3.0 - (802917): データベース ディレクトリ C:\Users\Linda のインスタンス a816c00e-0138-3e94-78a3-000000b35a08 Fitriani\Documents\NetBeansProjects\Jembatan\Jembatan2

データベース・クラス・ローダーが開始されました - derby.database.classpath=''

http://i1263.photobucket.com/albums/ii633/lindafitriani/javadb3.jpg

データベースの場所は正しい(私の作業ディレクトリ上)ですが、derby.database.classpathは空でした....これを修正する方法を知っている人はいますか?

これが私のコードです:

package jembatan;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
 *
 * @author Linda Fitriani
 */
public class DBConnect {
        private static Connection conn;
    private static String url = "jdbc:derby:Jembatan2;create=true;";
    private static String user = "APP";
    private static String pass = "linda";

    public static Connection connect() throws SQLException{
        try{
            Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
        }catch(ClassNotFoundException cnfe){
            System.err.println("Error: ClassNotFoundException"+cnfe.getMessage());
        }catch(InstantiationException ie){
            System.err.println("Error:InstantiationException"+ie.getMessage());
        }catch(IllegalAccessException iae){
            System.err.println("Error:IllegalAccessException"+iae.getMessage());
        }

        conn = DriverManager.getConnection(url,user,pass);
        return conn;
    }
    public static Connection getConnection() throws SQLException, ClassNotFoundException{
        if(conn !=null && !conn.isClosed())
            return conn;
        connect();
        return conn;

    }
}


private void buildData(){

          Connection c ;
          data = FXCollections.observableArrayList();
          try{
              c = DBConnect.connect();
            //SQL FOR SELECTING ALL OF APP.TABELJEMBATAN
            String SQL = "select * from APP.TABELJEMBATAN";
            //ResultSet
            ResultSet rs = c.createStatement().executeQuery(SQL);

            /**********************************
             * TABLE COLUMN ADDED DYNAMICALLY *
             **********************************/

            for(int i=0 ; i<rs.getMetaData().getColumnCount(); i++){
                //We are using non property style for making dynamic table
                final int j = i;                
                TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i+1));
                col.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){                    
                    public ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {                                                                                              
                        return new SimpleStringProperty(param.getValue().get(j).toString());                        
                    }                    
                });

                tableview.getColumns().addAll(col); 
                col.setMinWidth(200);
                System.out.println("Column ["+i+"] ");
            }

            /********************************
             * Data added to ObservableList *
             ********************************/
            while(rs.next()){
                //Iterate Row
                ObservableList<String> row = FXCollections.observableArrayList();
                for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){
                    //Iterate Column
                    row.add(rs.getString(i));
                }
                System.out.println("Row [1] added "+row );
                data.add(row);

            }

            //FINALLY ADDED TO TableView
            tableview.setItems(data);
          }catch(Exception e){
              e.printStackTrace();
              System.out.println("Error on Building Data");             
          }

      }
4

3 に答える 3

2

私は解決策を見つけました...

組み込みモードは、neatbeans インストール ディレクトリにデータベースを作成します。

"jdbc:derby:C:/Users/Linda Fitriani/.netbeans/7.1/derby/databaseJembatan;create=false;"

これが、アプリケーションがデータベースを見つけられない理由です。データベースは netbeans のインストール ディレクトリにあります。

于 2012-07-01T05:56:07.800 に答える