0

私はplay java 2.5を使用しています。 次のJavaコードでデータベースを作成しました。データベースを作成するJavaの進化

public OnStartup() throws SQLException { 
    //demo create database with java code 
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/?user=root&password=12345678"); 
    Statement s = con.createStatement(); 
    int Result = s.executeUpdate("CREATE DATABASE recruit3"); 
} 

モジュール:

public class OnStartupModule extends AbstractModule { 
    @Override 
    public void configure() { 
     bind(OnStartup.class).asEagerSingleton(); 
    } 
} 

はapplication.conf:

play.modules { 
    enabled += "be.objectify.deadbolt.java.DeadboltModule" 
    enabled += modules.CustomDeadboltHook 
    enabled += modules.OnStartupModule 
} 

default.driver=com.mysql.jdbc.Driver 
default.url="jdbc:mysql://localhost:3306/recruit3" 
default.username=root 
default.password="12345678" 

私の質問は、なぜそれを修正する方法

error Cannot connect to database [default] 

を作成するウェブアプリを実行しています、私がデータベースを作成したくないSQLワークベンチ。

ご提案がある場合やできない場合は、教えてください。 進んでいただきありがとうございます。

答えて

2

のと同様に動作するはずですので、あなたがにDatabaseを注入する必要があり、熱心なシングルトンとしてあなたのクラスを作りましたOnStartupを使用して、これらのプロパティで設定されたデータベースにアクセスします。

まず、PlayのJDBCサポートをbuild.sbtに追加します。すでにアクティベータを実行している場合

libraryDependencies += javaJdbc 

、ビルドへの変更をピックアップするreloadコマンドを使用してください。

application.confを更新して、データベース構成を正しい名前空間に配置します。

db { 
    default { 
    driver=com.mysql.jdbc.Driver 
    url="jdbc:mysql://localhost:3306/recruit3" 
    username=root 
    password="12345678" 
    }  
} 

最後に、プレイによって注入されるDatabaseオブジェクトを受け取るためにOnStartupを更新します。

import javax.inject.Inject; 
import play.db.Database; 

public class OnStartup { 

    @Inject 
    public OnStartup(final Database db) throws SQLException { 
     db.withConnection((Connection conn) -> { 
      final Statement s = con.createStatement(); 
      return s.executeUpdate("CREATE DATABASE recruit3"); 
     }); 
    } 
} 

これは、あなたがクラスに代わりにハードコーディングDBの構成を、application.confで、データベース1時間を設定することができます。

詳細はhereです。

+0

すごく、答えてくれてありがとう、私は今しようとする。 –

0

db.defaultではなく、データベースのキーがdefaultで始まります。正しい構文は次のようなものです:

db { 
    default { 
     driver=com.mysql.jdbc.Driver 
     url="jdbc:mysql://localhost:3306/recruit3" 
     username=root 
     password="12345678" 
    }  
} 

あなたはすでにそれがdb.default名前空間にデータベースのキーを移動

+0

問題は、データベースに接続しようとするとアプリケーションに問題はなく、アプリケーションをロードして再生すると、モジュールの前にデータベースのデフォルト接続が試行されるためです。OnStartupModule?私はこれについて知りません。コメントありがとう。 –

関連する問題