2015-06-29 65 views
1

我對Play和Java非常新穎(我來自Python和Django背景:))。我試圖連接到MYSQL數據庫並從中讀取數據。但是,在嘗試幾個令人沮喪的時間後,我無法這樣做。請幫忙。無法連接到MySQL並在Play Framework中執行操作2.4

我build.sbt一直依賴補充說:

"mysql" % "mysql-connector-java" % "5.1.18" 

我Application.conf文件是(相關部分)

db.default.driver=com.mysql.jdbc.Driver 
db.default.url="jdbc:mysql://127.0.0.1:3306/myDBName" 
db.default.user="root" 
db.default.password="myPassword" 

,我試圖讀取從分貝值上申請開始。後來我也想從控制器中的任何操作中完成它。我的代碼的相關部分:

import java.sql.ResultSet; 
import java.sql.SQLException; 
import play.db.*; 
import javax.sql.DataSource; 

@Override 
public void onStart(play.Application appConfig){ 
DataSource dataSources = DB.getDataSource(); 
java.sql.Connection connectionSQL = DB.getConnection(); 
ResultSet rs = connectionSQL.prepareStatement("select * from mytable").executeQuery(); 
while(rs.next()) { 
     System.out.println(rs.getString(1)); 
     Logger.debug(rs.getString(1)); 
    } 
} 

但是我得到一個空指針異常。我也嘗試了許多其他SO問題,如Simple CRUD tutorial about Play Framework and MySQL using Ebean?,但它們都是以前的版本。此外,官方Documentation似乎缺乏這方面。我知道這是一個相對較新的開源項目,但這只是我的兩分錢。如果我能夠做到這一點,我會嘗試發佈一個像我這樣失去靈魂的官方教程。直到那時,請幫助我。 謝謝

EDIT1 @biesior對不起,錯過了這些細節....現在已添加在問題中。也。

  1. 我還沒有車型。
  2. 我可能需要將來,但不是現在。
  3. 目前我只想訪問現有的表格。

正如我能夠創建模型並使用Morphia對象訪問MongoDB並執行操作一樣。所以我有基本的想法但截至目前爲止我只需要發揮的Java

+0

1.你有沒有你的表中創建的模型,(2)你想使用的模型? 3.這個新項目還是訪問現有的表格? – biesior

+0

@biesior對不起錯過了這些細節....現在在問題中添加了。也。我還沒有模特。我可能會在未來但不是現在。我只想訪問現有的表格。就像旁註一樣,我能夠創建模型並使用Morphia對象訪問MongoDB。所以我有基本的想法,但截至目前,我只需要訪問現有的MySQL數據庫與播放Java – 200ok

回答

1

好與Java訪問現有的MySQL數據庫,我建議Ebean's SqlQuery API這樣做(也許是因爲我只是喜歡它;)) 。

項目/ plugins.sbt取消對該行(最後一個):

addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "1.0.0") 

built.sbt修改行並添加PlayEbean爲啓用插件,如:

lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean) 

在您的conf/application.conf在數據庫配置後添加此行:

ebean.default = ["models.*"] 

所以,你可以用它即在你的行動(樣品OFC):

SqlQuery query = Ebean.createSqlQuery("SELECT * FROM users WHERE username LIKE :username"); 
    query.setParameter("username", "%200ok%"); 

    List<SqlRow> rows = query.findList(); 

    for (SqlRow row : rows) { 
     play.Logger.debug("Found user: " + row.getString("username") + " with ID: " + row.getInteger("id")); 
    } 
+0

工作就像一個魅力...這麼簡單...非常感謝...兩個小問題:1.我們不需要關閉任何連接?這是由Ebean自動處理的。 2.你能指點我一些用Java編寫Play2.4的好教程嗎?再一次感謝一噸 – 200ok

+0

廣告1.你不需要打開/關閉連接Ebean自己做。廣告2.在Play的頁面上查看官方文檔和教程。還熟悉Activator模板/樣本,例如_Computer數據庫Java_ – biesior

+0

謝謝...將盡快完成 – 200ok