2012-04-20 11 views
1

Java Server FacesおよびJavaDBを初めて使用しています。私は "Schema 'ROOT'が存在しないというエラーが原因でデータベースに接続しようとしています。私はこれ以上の私の髪を引っ張っていると私はそれが単純な何かでなければならないことを知っている。私はデータベース "guest_book"のユーザー名またはパスワードを設定しませんでした。データベースはAPPスキーマの下に存在します。次のように管理Beanは、接続プールがGuestBookPool名前とデータソースがあるれるJavaDBエラー 'Schema' ROOT 'does not exist'

create table messages 
(
    fname varchar(25), 
    lname varchar(35), 
    email varchar(50), 
    message varchar(300), 
    "DATE" varchar(11) 
); 

Insert into messages 
values('Jared', 'Rainey', '[email protected]', 'Hi!', '10-12-1982'); 

..次のようにデータベースを作成するために使用..

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() 

}

SQLが符号化されますjdbc/guest_book。私は何かのパスワードやユーザー名を設定していないし、それはすべて私の理解からAPPスキーマの下で作成されました。どんな助けでも大歓迎です!

+0

データソースはどのように設定されていますか? –

答えて

-1

JSFを使用している場合は、プロジェクトに表示されているWeb-INFフォルダにApplicationContextを作成して、データベースに接続できます。

目的のデータソースのシングルトンBeanを作成します。

使用している方法は推奨されていません。

ところで、もっとあなたを助けるために、私はどのデータベースを使用しているか尋ねることができますか?オラクル、ポストグル、アクセスなど?

+1

データソースをBeanクラスで宣言することはお勧めできません。 – abhi

+0

質問タイトルに記載されているように、OPはJavaDBを使用しています。 –

0

@ManagedBean(name="guestbean"); の代わりに@ManagedBean(name="guestbean", schema="APP");かスキーマが何であってもかまいません。

関連する問題