我正在创建一个简单的spring MVC应用程序,它从视图中获取数据并将其发送到我的机器上的PostgreSQL数据库。我一直在关注教程,并不完全熟悉处理数据访问对象中的连接设置的bean配置样式。我尝试发布到数据库时返回的错误如下:
HTTP状态500 - 请求处理失败;嵌套异常是java.lang.RuntimeException:org.postgresql.util.PSQLException:ERROR:relation" userid"不存在
"用户ID"是我用来测试的简单postgre表。
我的spring bean配置文件是:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.postgresql.Driver" />
<property name="url" value="jdbc:postgresql://localhost:5432/postgres" />
<property name="username" value="postgres" />
<property name="password" value="kittens" />
</bean>
这是处理与DB的连接的DAO:
package com.ARSmvcTest.dao.impl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.ARSmvcTest.dao.arsDAO;
import com.ARSmvcTest.models.ARS;
public class JDBCarsDAO implements arsDAO {
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void insert(ARS ars){
String sql = "INSERT INTO UserID " +
"(ID_, First_, Last_, Email_, Pwd_) VALUES (?, ?, ?, ?, ?)";
Connection conn = null;
try {
conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, ars.getID_());
ps.setString(2, ars.getFirst_());
ps.setString(3, ars.getLast_());
ps.setString(5, ars.getPwd_());
ps.setString(4, ars.getEmail_());
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {}
}
}
}
// FIND ARS BY ID WILL GO HERE EVENTUALLY
}
spring bean正在成功地将数据传递给连接,如下面的截图所示:
http://i.imgur.com/Hb7O5Qi.png(道歉,新用户,无法嵌入图片)
尽管dataSource对象从我上面的spring bean接收连接属性,但我注意到ConnectionProperties字段仍为null。
这是导致插入尝试异常的原因吗?
最后,我将在失败时将浏览器中显示的Exception和堆栈的屏幕截图包括在内:
http://i.imgur.com/prj1HtY.png(道歉,无法嵌入图片)
答案 0 :(得分:0)
此异常直接从数据库(-driver)触发。 它告诉你名为&#34; userid&#34;不存在。
请检查:
我希望这会对你有所帮助,因为这似乎是这种异常的典型错误。