Glassfish JavaDB错误'Schema'ROOT'不存在'

Glassfish JavaDB错误'Schema'ROOT'不存在',glassfish,javadb,Glassfish,Javadb,我不熟悉Java服务器界面和JavaDB。由于数据库出现错误,说明架构“ROOT”不存在,我正在努力连接。我正为这件事发愁,我知道这一定很简单。我没有为数据库留言簿设置用户名或密码。数据库存在于应用程序架构下。托管bean的编码如下所示 package com.jsf; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ import j

我不熟悉Java服务器界面和JavaDB。由于数据库出现错误,说明架构“ROOT”不存在,我正在努力连接。我正为这件事发愁,我知道这一定很简单。我没有为数据库留言簿设置用户名或密码。数据库存在于应用程序架构下。托管bean的编码如下所示

    package com.jsf;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.annotation.Resource;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.sql.DataSource;
import javax.sql.rowset.CachedRowSet;

/**
 *
 * @author pctdeveloper7
 */
@ManagedBean(name="guestbean")
@SessionScoped
public class GuestBookBean {

private String date;
private String fname;
private String lname;
private String email;
private String message;

@Resource( name="jdbc/guest_book" )
DataSource ds;

/**
 * Creates a new instance of NewJSFManagedBean
 */
public GuestBookBean() {

}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

public String getFname() {
    return fname;
}

public void setFname(String fname) {
    this.fname = fname;
}

public String getLname() {
    return lname;
}

public void setLname(String lname) {
    this.lname = lname;
}



//return a resultset of entries
public ResultSet getEntries() throws SQLException{
    //Check if was injected by the server
    if(ds == null)
        throw new SQLException("Unable to obtain datsource");

    //get connection from datapool
    Connection conn = ds.getConnection("root","root");

    //check if connection was successful
    if(conn==null)
        throw new SQLException("Unable to connect to DataSource");



    try{

        //Create a prepared statement to insert a new address book entry
        PreparedStatement getMessages = conn.prepareStatement("Select * " +
                "FROM MESSAGES ORDER BY lname, fname");
        CachedRowSet rowset= new com.sun.rowset.CachedRowSetImpl();
        rowset.populate(getMessages.executeQuery());
        return rowset;
    } finally{
        conn.close(); //return connection to pool
    }
}//End getEntries

//Save a new guestbook message
public String save() throws SQLException{

    //Check if was injected by the server
    if(ds == null)
        throw new SQLException("Unable to obtain datsource");

    //get connection from datapool
    Connection conn = ds.getConnection();

    //check if connection was successful
    if(conn==null)
        throw new SQLException("Unable to connect to DataSource");

    try{
        //create a preparedStatement to insert a new guestbook entry
        PreparedStatement insertEntry = conn.prepareStatement("INSERT INTO"+
                "messages values( ?, ?, ?, ?, ?)");
        //define prepared statements arguements
        insertEntry.setString(1, fname);
        insertEntry.setString(2, lname);
        insertEntry.setString(3, email);
        insertEntry.setString(4, message);
        insertEntry.setString(5, date);

        insertEntry.executeUpdate();// insert the new entry
        return "index"; //go back to the index page

    }finally{
        conn.close();//return connection to the pool
    }
}//END Save()
    create table messages
(
    fname varchar(25),
    lname varchar(35),
    email varchar(50),
    message varchar(300),
    "DATE" varchar(11)
);

Insert into messages
values('Jared', 'Rainey', 'jared.rainey.it@gmail.com', 'Hi!', '10-12-1982');
}

用于创建数据库的SQL如下所示

    package com.jsf;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.annotation.Resource;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.sql.DataSource;
import javax.sql.rowset.CachedRowSet;

/**
 *
 * @author pctdeveloper7
 */
@ManagedBean(name="guestbean")
@SessionScoped
public class GuestBookBean {

private String date;
private String fname;
private String lname;
private String email;
private String message;

@Resource( name="jdbc/guest_book" )
DataSource ds;

/**
 * Creates a new instance of NewJSFManagedBean
 */
public GuestBookBean() {

}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

public String getFname() {
    return fname;
}

public void setFname(String fname) {
    this.fname = fname;
}

public String getLname() {
    return lname;
}

public void setLname(String lname) {
    this.lname = lname;
}



//return a resultset of entries
public ResultSet getEntries() throws SQLException{
    //Check if was injected by the server
    if(ds == null)
        throw new SQLException("Unable to obtain datsource");

    //get connection from datapool
    Connection conn = ds.getConnection("root","root");

    //check if connection was successful
    if(conn==null)
        throw new SQLException("Unable to connect to DataSource");



    try{

        //Create a prepared statement to insert a new address book entry
        PreparedStatement getMessages = conn.prepareStatement("Select * " +
                "FROM MESSAGES ORDER BY lname, fname");
        CachedRowSet rowset= new com.sun.rowset.CachedRowSetImpl();
        rowset.populate(getMessages.executeQuery());
        return rowset;
    } finally{
        conn.close(); //return connection to pool
    }
}//End getEntries

//Save a new guestbook message
public String save() throws SQLException{

    //Check if was injected by the server
    if(ds == null)
        throw new SQLException("Unable to obtain datsource");

    //get connection from datapool
    Connection conn = ds.getConnection();

    //check if connection was successful
    if(conn==null)
        throw new SQLException("Unable to connect to DataSource");

    try{
        //create a preparedStatement to insert a new guestbook entry
        PreparedStatement insertEntry = conn.prepareStatement("INSERT INTO"+
                "messages values( ?, ?, ?, ?, ?)");
        //define prepared statements arguements
        insertEntry.setString(1, fname);
        insertEntry.setString(2, lname);
        insertEntry.setString(3, email);
        insertEntry.setString(4, message);
        insertEntry.setString(5, date);

        insertEntry.executeUpdate();// insert the new entry
        return "index"; //go back to the index page

    }finally{
        conn.close();//return connection to the pool
    }
}//END Save()
    create table messages
(
    fname varchar(25),
    lname varchar(35),
    email varchar(50),
    message varchar(300),
    "DATE" varchar(11)
);

Insert into messages
values('Jared', 'Rainey', 'jared.rainey.it@gmail.com', 'Hi!', '10-12-1982');

连接池名为GuestBookPool,数据源为jdbc/guest_book。我没有为任何东西设置密码或用户名,据我所知,这些都是在应用程序模式下创建的。任何帮助都将不胜感激

如果您使用的是JSF,则可以通过在project中所示的Web INF文件夹中创建ApplicationContext将连接到数据库

创建所需数据源的单例bean

您使用的方法不是首选方法

顺便问一下,为了帮助您,我可以问一下您使用的是哪个数据库吗?Oracle、postgres、Access等?

而不是@ManagedBeanname=guestbean;
试试@ManagedBeanname=guestbean,schema=APP;或者不管你的模式是什么

不建议在bean类中声明数据源。如问题标题中所述,OP使用的是JavaDB。您的数据源是如何配置的?