- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在内存数据库中使用 H2 和 play 框架 我是初学者所以我决定制作一个小的登录注册应用程序来开始使用 scala 并玩我决定在内存数据库中使用 H2 但它抛出 Table未找到
异常我在 sql 文件中编写了一个脚本并播放要求我在启动应用程序时应用此脚本但是当我尝试向其中插入数据时它抛出异常,异常是
[JdbcSQLException: Table "USERINFO" not found; SQL statement:
insert into USERINFO (fname,lname,email,userName,pwd,age,choice,gender) values (?,?,?,?,?,?,?,?) [42102-175]]
这是sql文件的脚本
# --- !Ups
CREATE TABLE USERINFO(
fname varchar(255) NOT NULL,
lname varchar(255) NOT NULL,
email varchar(255) NOT NULL,
userName varchar(255) NOT NULL,
pwd varchar(255) NOT NULL,
age Int NOT NULL,
choice varchar(255) NOT NULL,
gender varchar(255) NOT NULL
);
DROP TABLE USERINFO;
这是 application.conf 的一部分
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
db.default.user=sa
db.default.password=""
db_close_delay=-1
这里是application.scala的代码
package controllers
import play.api._
import play.api.mvc._
import play.api.data._
import play.api.data.Forms._
import views.html.defaultpages.badRequest
import play.api.data.validation.Constraints._
import models.User
object Application extends Controller {
val RegisterForm = Form(
mapping(
"fname" -> nonEmptyText(1, 20),
"lname" -> nonEmptyText(1, 20),
"email" -> email,
"userName" -> nonEmptyText(1, 20),
"password" -> nonEmptyText(1, 20),
"age" -> number,
"choice" -> text,
"gender" -> text
)
(User.apply)(User.unapply)
verifying("Ag should be greater then or eual to 18",model=> model.age match
{
case (age) => age>=18
})
)
def index = Action {
Ok(views.html.index(RegisterForm))
}
def register =Action {implicit request =>
RegisterForm.bindFromRequest().fold(
hasErrors => BadRequest(views.html.index(hasErrors))
,
success => {
val result = User.save(success)
println(s"INSERT succeeded, id = $result")
Redirect(routes.Application.index)
}
)
}
}
这是User.scala的代码
package models
import anorm._
import play.api.db.DB
import anorm.SqlParser._
import play.api.Play.current
case class User (
fname:String,
lname:String,
email:String,
userName:String,
password:String,
age:Int,
choice:String,
gender:String
)
object User{
val userinfo = {
get[String]("fname") ~
get[String]("lname") ~
get[String]("email") ~
get[String]("userName") ~
get[String]("pwd") ~
get[Int]("age") ~
get[String]("choice") ~
get[String]("gender") map {
case fname ~ lname ~email~ userName ~ password ~age~ choice~gender =>
User(fname , lname ,email, userName , password ,age, choice,gender)
}
}
def save(ud:User):Option[Long]= {
val id :Option[Long] = DB.withConnection {implicit c =>
SQL ("insert into USERINFO (fname,lname,email,userName,pwd,age,choice,gender) values ({fname},{lname},{email},{userName},{password},{age},{choice},{gender})")
.on('fname -> ud.fname, 'lname ->ud.lname ,'email ->ud.email, 'userName->ud.userName , 'password->ud.password ,'age->ud.age, 'choice->ud.choice,'gender->ud.gender)
.executeInsert()
}
id
}
/* def save(ud:User)= {
DB.withConnection {implicit c =>
SQL ("insert into USERINFO (fname,lname,email,userName,pwd,age,choice,gender) values ({fname},{lname},{email},{userName},{password},{age},{choice},{gender})")
.on('fname -> ud.fname, 'lname ->ud.lname ,'email ->ud.email, 'userName->ud.userName , 'password->ud.password ,'age->ud.age, 'choice->ud.choice,'gender->ud.gender)
.executeUpdate()
}
}
*/
}
我尝试了 executeUpdate
和 executeInsert
但没有任何改变请帮助我哪里做错了
最佳答案
1.
问题很可能是 Play! Framework在查询中引用了标识符名称(表名、列名),所以在'create table'语句中也需要引用表名:
CREATE TABLE "USERINFO"(
"fname" varchar(255) NOT NULL,
"lname" varchar(255) NOT NULL,
"email" varchar(255) NOT NULL,
"userName" varchar(255) NOT NULL,
"pwd" varchar(255) NOT NULL,
"age" Int NOT NULL,
"choice" varchar(255) NOT NULL,
"gender" varchar(255) NOT NULL
);
2.
如果没有任何帮助。还有一种方法。我阅读了迁移文档,必须将 libraryDependencies += evolutions
应用于 build.sbt。
这些不是必需的,它们会自动应用进化(不显示数据库“默认”需要进化!):
applyEvolutions.db=true
applyEvolutions.default=true
applyDownEvolutions.default=true
关于database - H2 内存数据库,[JdbcSQLException : Table "USERINFO" not found; SQL statement:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28193656/
我正在学习 java,并研究了来自 sun.com 的以下示例。 import java.io.*; import java.util.*; public class UserInfo impleme
我需要根据 URI 子集来识别用户。它具有以下模式 http://userinfo@hostname:port/path。 java.net.URI implementation 表示 URI。但是,
我正在尝试使用以下 GET 访问 Office365 Azure 租户上用户的 OpenId UserInfo 端点: GET https://login.windows.net/common/ope
如何使用 org.apache.jackrabbit.api.security.user 获取 CQ5 用户信息像java或jsp中的名称和组信息。? 最佳答案 在 JSP/Java 中,您可以将您的
我正在做一个安排本地通知并保存用户信息的应用程序。这部分没问题。 但是当应用程序关闭时,如果出现 Notification 并且用户点击,则不会调用该方法,我无法处理 userInfo。 我看到有一种
使用 Swift 语言从 xCode 获取编译错误消息:“extra argument userinfo in call”。问题是如何使用定时器中的 userInfo 数据到通知中心的参数“userI
根据ASIHTTPRequest网站: If your requests are all of the same broad type, but you want to distinguish bet
实现下一个代码时: func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLA
我调用NotificationCenter的post方法时有一个方法: func processMessage(message: CocoaMQTTMessage) { Log.d("Dest
我需要使用 userInfo 填充推送通知的字段(.title 和 .body)。我什么都试过了,但我只能输入“日期”代码块。我能怎么做?谢谢。 这是我从控制台 php 发送推送通知时的输出: OUT
我正在尝试创建我的 userinfo 命令,您可以为任何用户执行此操作,并显示服务器中的语音时间和服务器中发送的消息这是我的!!userinfo 命令 const Discord = module.r
所以我一直想弄清楚为什么 userInfo 一直没有显示我想要的数据。当我打印 userInfo 时,我得到了这个: [AnyHashable("aps"): { alert = "test
我有一个来自 UILocalNotification 的 userInfo 字典。使用隐式展开时是否有一种简单的方法来获取 String 值? if let s = userInfo?["ID"] 给
我有一个返回字典的通知,很像在 objective-c 中,但我没有得到我期望的结果。 这是发布通知的方法。它实际上是返回日期选择器的结果(日期)。 @IBAction func dateOfBirt
由于 ADFS 4.0 隐式流不返回 id_token 中的自定义声明,我尝试从 userInfo 端点获取这些声明。要获取 userinfo 端点的访问 token ,必须使用资源 urn:micr
我一直在使用身份服务器快速启动应用程序,我想添加调用userinfo端点时要返回的角色信息。 public Claim[] GetUserClaims(UserServiceProxy.Dto.U
我正在我的应用程序中使用 NSManagedObjectContextObjectsDidChangeNotification 通知,我现在已经知道如何使用它了。因为我使用了下面的代码来添加观察者..
在那段代码中,我有两个 NSLog 都表示 dict 的保留计数为 1。由于如果数组中有很多对象,计时器可能会在很长一段时间内触发,我可以保留给用户信息的字典吗?因为我猜它是自动释放的,而schedu
在当前 header 中,它声明为: @property (nonatomic, readonly, strong) NSMutableDictionary *userInfo NS_AVAILABL
我正在尝试使用 NSNotification 发送一些数据,但遇到了困难。这是我的代码: // Posting Notification NSDictionary *orientationData;
我是一名优秀的程序员,十分优秀!