私はTypeSafe
の滑らかなライブラリを利用してMySQLサーバとのインタフェースを試みています。すべてのスタートアップ/チュートリアルの例では、withSession{}
を使用してフレームワークが自動的にセッションを作成し、{}
の中でクエリを実行し、ブロックの最後にセッションを終了します。データベースセッションを開いたままにする
私のプログラムはかなり面倒なので、スクリプトの実行中は永続的な接続を維持したいと考えています。これまでは、明示的にセッションを作成して終了するためにこのコードをまとめました。
val db = Database.forURL("jdbc:mysql://localhost/sandbox", user = "root", password="***", driver = "com.mysql.jdbc.Driver")
val s = db.createSession()
...
s.close()
私はその間でクエリを実行できます。しかし、私は(屈原+ "が ") '+名+' TEST(名)の値(挿入"")など
として、コマンドを実行しようとする。
を実行することがクラッシュしたため、暗黙のセッションを見つけることができません。私はsyntax of the execute definition in the documentationを完全に理解していませんが、明示的なセッションを渡すためのオプションのパラメータがあるようです。私は.execute(s)を使ってみましたが、純粋な展開では何もしないという警告が出ます。
クエリを実行するために既存のセッションを明示的に指定する方法を教えてください。
別記:試用コードJABのソリューションのためのコンパイルエラーを返し
class ActorMinion(name: String) extends Actor
{
Database.forURL("jdbc:mysql://localhost/sandbox", user = "root", password="****", driver = "com.mysql.jdbc.Driver") withSession
{
def receive =
{
case Execute =>
{
(Q.u + "insert into TEST (name) values('"+name+"')").execute
sender ! DoneExecuting(name,output,err.toString)
}
}
}
}
[エラー] /home/ubuntu/helloworld/src/main/scala/hw.scala: 41:拡張関数のパラメータタイプがありません
[エラー]匿名関数の引数型を完全に知っている必要があります。 (SLS 8.5)
[エラー]予想されるタイプは?
[エラー] {
[エラー]^
[エラー] 1つのエラーがちょうど
withSession{}
でスクリプトの関連部分を囲む
から必要なものを導き出します。私は俳優にメッセージを受け取り、それをデータベースに記録したいと思っています。メッセージはreceive()インタフェースを介して非同期に受信されます。私はwithSession {}をreceive()定義の回りにラップしようとしましたが、scalaは無名関数の中で定義を作成するのが好きではありません。 –
また、基本的なクエリを使用してセッション設定用の作業PoCを取得した後、次にトランザクション/準備文に取り掛けるつもりです。 :) –
スカラはそれについて何が好きではないのですか?確かに私はコンテキストマネージャーで並行処理をしていませんが、無名関数内の定義が名前付き関数内の定義と異なるのはなぜですか。おそらく別の問題が関与しているでしょうか? – JAB