无法连接到 MySQL 并在 Play Framework 2.4 中执行操作
Unable to connect to MySQL and perform operations in Play Framework 2.4
我是 Play 和 Java 的新手(我来自 Python 和 Django 背景 :))。我正在尝试连接到 MYSQL 数据库并从中读取值。但是,在尝试了几个令人沮丧的小时后,我无法这样做。请帮助。
我的 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"
我正在尝试在应用程序启动时从 Db 中读取值。稍后我也想通过控制器中的任何操作来完成它。我代码的相关部分:
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? but they are all for previous versions. Also,the official Documentation 在这方面似乎缺乏。我知道这是一个相对较新的开源项目,但这只是我的两分钱。如果我能够做到这一点,我会尝试为像我这样迷失的灵魂发布一个官方教程。到那时,请帮助我。
谢谢
EDIT1 @biesior 很抱歉错过了这些细节....现在已经添加到问题中。还。
- 我还没有模型。
- 我以后可能需要,但现在不需要。
- 目前我只想访问现有表。
正如旁注,我能够创建模型并使用 Morphia 对象访问 MongoDB 并执行操作。所以我有基本的想法 但截至目前,我只需要通过播放 java[ 访问现有的 MySQL 数据库=15=]
好吧 Java 我建议 Ebean's SqlQuery API 这样做(也许是因为我更喜欢它 ;))。
在project/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.*"]
因此您可以使用它,即在您的操作中作为 (sample 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"));
}
我是 Play 和 Java 的新手(我来自 Python 和 Django 背景 :))。我正在尝试连接到 MYSQL 数据库并从中读取值。但是,在尝试了几个令人沮丧的小时后,我无法这样做。请帮助。
我的 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"
我正在尝试在应用程序启动时从 Db 中读取值。稍后我也想通过控制器中的任何操作来完成它。我代码的相关部分:
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? but they are all for previous versions. Also,the official Documentation 在这方面似乎缺乏。我知道这是一个相对较新的开源项目,但这只是我的两分钱。如果我能够做到这一点,我会尝试为像我这样迷失的灵魂发布一个官方教程。到那时,请帮助我。 谢谢
EDIT1 @biesior 很抱歉错过了这些细节....现在已经添加到问题中。还。
- 我还没有模型。
- 我以后可能需要,但现在不需要。
- 目前我只想访问现有表。
正如旁注,我能够创建模型并使用 Morphia 对象访问 MongoDB 并执行操作。所以我有基本的想法 但截至目前,我只需要通过播放 java[ 访问现有的 MySQL 数据库=15=]
好吧 Java 我建议 Ebean's SqlQuery API 这样做(也许是因为我更喜欢它 ;))。
在project/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.*"]
因此您可以使用它,即在您的操作中作为 (sample 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"));
}