java.sql.SQLSyntaxErrorException:Table / View' x'不存在

时间:2015-03-21 16:08:19

标签: java jdbc derby

我正在尝试使用GlassFish 4.1在NetBeans 8.0.2 IDE中运行名为AddressBook的Web应用程序(带有Facelets的JSF),该应用程序通过托管bean中的以下代码访问关系数据库:

@Resource( name="jdbc/addressbook" )
DataSource dataSource;

当我运行应用程序时,我在浏览器中收到以下错误:

java.sql.SQLSyntaxErrorException: Table/View 'ADDRESSES' does not exist
    at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
    at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
    at org.apache.derby.client.am.Connection.prepareStatement(Unknown Source)
    at com.sun.gjc.spi.base.ConnectionHolder.prepareStatement(ConnectionHolder.java:586)
    at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement(ConnectionWrapper40.java:255)
    at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement(ConnectionWrapper40.java:52)
    at com.sun.gjc.spi.ManagedConnectionImpl.prepareCachedStatement(ManagedConnectionImpl.java:992)
    at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareStatement(ConnectionWrapper40.java:173)
    at addressbook.AddressBean.getAddresses(AddressBean.java:157)

AddressBean.java第157行是:

PreparedStatement getAddresses = connection.prepareStatement(
            "SELECT FIRSTNAME, LASTNAME, STREET, CITY, STATE, ZIP " +
            "FROM ADDRESSES ORDER BY LASTNAME, FIRSTNAME" );

包含ADDRESSES表的地址簿数据库是通过以下步骤创建的:

  1. 创建连接池

    1. 右键单击GlassFish服务器并选择“查看域管理控制台”
    2. 在左栏中常见任务的GlassFish网页中,单击
    3. JDBC连接池
    4. 点击新按钮并添加以下条目:
      • AddressBookPool for the Name
      • 资源类型的javax.sql.DataSource
      • 数据库供应商的JavaDB
    5. 单击“下一步”并滚动到“其他属性”并设置以下内容 字段:
      • 属性:; create = true
      • DatabaseName:addressbook
      • 密码:APP
      • 点击完成
  2. 创建数据源名称

    1. 在左栏中常见任务的GlassFish网页中,单击
      JDBC资源
    2. 单击New Button并将JDBC / addressbook指定为JNDI名称
    3. 选择AddressBookPool作为池名称
  3. 当我返回NetBeans服务选项卡时,已在Java DB下创建了地址簿。

    我成功连接到数据库:jdbc:derby:// localhost:1527 / addressbook [APP on APP]并使APP成为默认架构

    我在NetBeans中打开一个文件:addressbook.sql,其中包含用于填充地址簿的SQL。我在上面的连接上运行它,并创建了ADDRESSES表,我可以查看数据。

    AddressBook属性将Java DB Driver作为库。

1 个答案:

答案 0 :(得分:2)

确保您的web.xml文件(在Configuration Files文件夹中)具有资源引用。例如:

    <resource-ref>
        <res-ref-name>jdbc/db1</res-ref-name>
        <res-type>javax.sql.ConnectionPoolDataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>

其中db1是您的jdbc资源名称。还要确保该值具有正确的资源类型,即示例中的连接池数据源。

相关问题