Java prepairedStatement setInt 正在 SQL 添加引号
Java prepairedStatement setInt is adding quotes in the SQL
我有一个简单的 SQL 语句,我想通过
执行
String tokenInsQ = "INSERT INTO pitweb.tokens (token_user_id,token_token,token_valid,token_refresh) (?,?,?,?)";
try {
PreparedStatement p = SQL.dbConnection.prepareStatement(tokenInsQ);
p.setInt(1, r.getInt("user_id").intValue());
p.setString(2, token.getString("token"));
p.setTimestamp(3, (Timestamp)token.get("valid"));
p.setTimestamp(4, (Timestamp)token.get("renew"));
System.out.println(p);
p.executeUpdate();
p.close();
}
我希望它能正常工作。 Token 是一个长字符串并且 r.getInt("user_id").intValue()
Returns 11。我不断收到的错误是
org.postgresql.util.PSQLException: ERROR: syntax error at or near ""
Position: 82
所以我添加了 print 语句以查看它正在尝试执行的 SQL。程序打印。
INSERT INTO pitweb.tokens (token_user_id,token_token,token_valid,token_refresh) ('11','really long string ','2020-03-17 13:15:22.847000 -05:00','2020-03-14 13:15:22.847000 -05:00')
我认为我的问题是 token_user_id ('11')
在引号中。这是因为我创建准备好的语句的方式吗?还是我有其他问题。输出对我来说似乎很模糊
这是令牌 table 的样子
CREATE TABLE pittweb.token
(
token_id integer NOT NULL DEFAULT nextval('pittweb.token_token_id_seq'::regclass),
toekn_user_id integer,
token_valid timestamp without time zone,
toekn_refresh timestamp without time zone,
token_token text COLLATE pg_catalog."default",
CONSTRAINT token_pkey PRIMARY KEY (token_id),
CONSTRAINT token_toekn_user_id_fkey FOREIGN KEY (toekn_user_id)
REFERENCES pittweb."user" (user_id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
)
WITH (
OIDS = FALSE
)
列名称中有错字 toekn_user_id。在插入语句中,您使用了 token_user_id
而在 DDL 中它是 toekn_user_id
toekn_refresh 和 toekn_user_id 中也有错字。
我有一个简单的 SQL 语句,我想通过
执行 String tokenInsQ = "INSERT INTO pitweb.tokens (token_user_id,token_token,token_valid,token_refresh) (?,?,?,?)";
try {
PreparedStatement p = SQL.dbConnection.prepareStatement(tokenInsQ);
p.setInt(1, r.getInt("user_id").intValue());
p.setString(2, token.getString("token"));
p.setTimestamp(3, (Timestamp)token.get("valid"));
p.setTimestamp(4, (Timestamp)token.get("renew"));
System.out.println(p);
p.executeUpdate();
p.close();
}
我希望它能正常工作。 Token 是一个长字符串并且 r.getInt("user_id").intValue()
Returns 11。我不断收到的错误是
org.postgresql.util.PSQLException: ERROR: syntax error at or near ""
Position: 82
所以我添加了 print 语句以查看它正在尝试执行的 SQL。程序打印。
INSERT INTO pitweb.tokens (token_user_id,token_token,token_valid,token_refresh) ('11','really long string ','2020-03-17 13:15:22.847000 -05:00','2020-03-14 13:15:22.847000 -05:00')
我认为我的问题是 token_user_id ('11')
在引号中。这是因为我创建准备好的语句的方式吗?还是我有其他问题。输出对我来说似乎很模糊
这是令牌 table 的样子
CREATE TABLE pittweb.token
(
token_id integer NOT NULL DEFAULT nextval('pittweb.token_token_id_seq'::regclass),
toekn_user_id integer,
token_valid timestamp without time zone,
toekn_refresh timestamp without time zone,
token_token text COLLATE pg_catalog."default",
CONSTRAINT token_pkey PRIMARY KEY (token_id),
CONSTRAINT token_toekn_user_id_fkey FOREIGN KEY (toekn_user_id)
REFERENCES pittweb."user" (user_id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
)
WITH (
OIDS = FALSE
)
列名称中有错字 toekn_user_id。在插入语句中,您使用了 token_user_id
而在 DDL 中它是 toekn_user_id
toekn_refresh 和 toekn_user_id 中也有错字。