- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这似乎是一个非常简单的问题,但我无法弄清楚我的问题是什么。我有一个方法 addTask,它将一些信息添加到我们的数据库中,如以下代码所示:
public static boolean addTask(String name, String question, int accuracy, int type){
StringBuilder sql = new StringBuilder();
sql.append("INSERT INTO tasks (name, question, type, accuracy) ");
sql.append("VALUES(?, ?, ?, ?)");
try {
Connection c = DbAdaptor.connect();
PreparedStatement preparedStatement = c.prepareStatement(sql.toString());
preparedStatement.setString(1, name);
preparedStatement.setString(2, question);
preparedStatement.setInt(3, type);
preparedStatement.setInt(4, accuracy);
preparedStatement.execute();
preparedStatement.close();
c.close();
return true;
}
catch (SQLException e) {
e.printStackTrace();
return false;
}
}
我的问题是 preparedStatement.execute() 总是返回 false,表明信息还没有被添加到数据库中。我可以运行 psql,这确认没有任何内容写入数据库。连接肯定连接到正确的数据库(我放入一些其他 printlns 等来检查这个)。我正在尝试插入一个新初始化的表,如下所示:
CREATE TABLE tasks
(
id SERIAL PRIMARY KEY,
submitter INTEGER REFERENCES accounts (id),
name VARCHAR(100) NOT NULL,
question VARCHAR(100) NOT NULL,
accuracy INTEGER NOT NULL,
type INTEGER REFERENCES types (id),
ex_time TIMESTAMP,
date_created TIMESTAMP
);
DbAdaptor.connect() 的代码:
public static Connection connect(){
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Properties properties = new Properties();
properties.setProperty("user", USER);
properties.setProperty("password", PASSWORD);
try {
return DriverManager.getConnection(URL, properties);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
其中USER
和PASSWORD
是类中的静态字段
最佳答案
你误解了PreparedStatement#execute()
的返回值.
请仔细阅读the javadoc :
Returns:
true
if the first result is aResultSet
object;false
if the first result is an update count or there is no result.
因此,它在 INSERT
查询中返回——正如完全预期的那样——false
。它仅在 SELECT
查询上返回 true
(但您通常喜欢使用 executeQuery()
而不是直接返回 ResultSet
) .
如果您对受影响的行感兴趣,请使用 PreparedStatement#executeUpdate()
反而。它根据 the javadoc 返回一个 int
:
Returns:
either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing
返回值 1 或更大表示插入成功。
与具体问题无关:您的代码正在泄漏数据库资源。请仔细阅读How often should Connection, Statement and ResultSet be closed in JDBC?
关于java - 将准备好的语句插入数据库 - PSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14016677/
我的数据库有 很多 table (比如 400+),我只记得我要找的那个人的名字的一部分。 我知道 \d将显示所有表格,但这太多了。是否有一些命令可以列出名称与给定正则表达式匹配的所有表? 谢谢 最佳
有没有办法使用 psql 命令行界面显示表中的所有内容? 我可以使用\list显示所有数据库,\d显示所有表格,但如何显示表格中的所有数据? 最佳答案 较新版本:(从 8.4 - mentioned
我有一个奇怪的情况,which psql 结果是 /usr/local/php5/bin/psql。 我无法退出它,而且它是一个可执行文件。我在网上阅读的所有内容都不适用。 我试过这样做:pg_ctl
刚刚创建了一个登录角色,随后创建了一个由登录角色拥有的数据库(两者都具有相同的名称“。我指定了一个密码。键入 psql fplanner 并立即被带到没有它的控制台从密码询问。我登录到我的计算机的管理
使用 psql,我想格式化 bool 值以显示为 TRUE 和 FALSE 而不是 t和 f 默认情况下,因为我发现后者很难相互区分。 我可以通过在我的 ~/.psqlrc 中设置以下内容来更改 nu
我正在构建一个从 friend 那里克隆的 Rails 应用程序。我正在使用 Ubuntu 13.10,rails 3.2.14。我正在使用 postgresql 数据库,当我尝试运行 rake db
我对 psql 完全陌生,对某些术语不是特别熟悉。我正在按照此处链接中有关模仿的 ETL 流程的说明进行操作:https://github.com/chichukw/mimic-omop/blob/m
我正在尝试学习如何将 prisma 与 psql 数据库一起使用。 我在使用 id 是 uuid 字符串的引用时遇到问题。 我有一个用户模型: model User { id Str
lecture3-# SELECT * FROM flights; ERROR: syntax error at or near "psql" LINE 1: psql 这是代码和错误。我在 Env
我正在尝试执行两个 sql 命令(创建一个新的架构和表),如果执行失败,它将启用两个命令的回滚。我要连接的数据库是 AWS Redshift。 create schema if not exists
我正在尝试将新终端 Postgres shell (psql) 添加到 Windows 终端。我想将其添加到设置中的配置文件列表中。 这是 Windows 终端。 在设置文件中,我们可以添加配置文件列
我在使用 PostgreSQL 时遇到问题。我最近在 ubuntu 20.04 中安装了这个版本 (13+223.pgdg20.04+1) 的 postgresql 包。 我正在尝试运行 psql命令
我将我的 postgres 版本从 9.2.24 切换到 9.6,因为我需要 jsonb 兼容性以及其他最新功能。我在 centos 7 上运行虚拟机。 我决定删除所有现有的 postgres 实例(
大家好,正如标题所说,我在尝试从转储文件导入“创建”新数据库时遇到问题。当我尝试运行 sql 查询时 - 我收到有关 的错误 ' COPY ' .当你通过 psql 控制台运行时,我得到 wrong
每当我尝试以用户 postgres 身份运行 psql 命令时,我都会收到此错误。 psql: 无法连接到服务器: 没有那个文件或目录 服务器是否在本地运行并接受 Unix 域套接字“/var/run
heroku pg:psql 命令在尝试连接到数据库时抛出错误。 (venv) PS C:\Users\Mevin\Desktop\poster> heroku pg:psql ---> Connec
我是 Postgres 和 Bash 的新手,所以我不确定有什么区别。 我正在尝试在 bash 脚本中自动更新 Postgres 中的表。我有 .sql 文件并创建了 .pgpass 600 的文件。
我正在使用 Windows 10 并为其安装了 Psql (9.6.4)。安装时,它要求我输入 super 用户“postgres”的密码,我输入的是“asdfasdf”。所以安装后,我用 psql
更新:有人在下面提到这是重复的:https://dba.stackexchange.com/questions/269473/what-does-psql-usr-pgsql-11-lib-libpq
在 postgres.app 安装和运行时出现问题,但是当我输入 哪个psql然后我收到“/usr/bin/psql”而不是 postgres.app 期望的正确路径。当我回应我的 PATH 时,我得
我是一名优秀的程序员,十分优秀!