jjzjj

preparedstatement

全部标签

Java mysql,使用PreparedStatement的简单更新有语法错误

这段代码有一些简单的语法错误。我已经战斗了几个小时,我放弃了。你能发现吗?我打赌这很容易。谢谢!当我只更新名字John时,没问题。当我也尝试更新姓氏的注释行时,出现语法错误。importjava.sql.*;publicclassUpdateTester{publicstaticvoidmain(String[]args){try{Connectconnect=newConnect();Connectionconnection=connect.getConnection();try{Stringsql="UPDATEstudentSETfirstName=?"+"WHEREstuden

java - 如果遇到暂时性异常,我可以重新使用 PreparedStatement 吗?

我有一段代码可以更新数据库中的记录。简化示例:...statement=connection.prepareStatement("INSERTINTOthistable(name)VALUES(?)",PreparedStatement.RETURN_GENERATED_KEYS);statement.setString(1,"Fred");statement.addBatch();statement.setString(2,"Joe");statement.addBatch();statement.executeBatch();...这是一些处理大量记录的代码的一部分,代码运行大量线

java - 在 Tomcat 上使用 MySQL 池化 PreparedStatement

将Tomcat与MySQL一起使用时,Tomcat数据源配置中的poolPreparedStatements设置(我相信来自DBCP)和Connector/J之间的关系是什么cachePrepStmts环境?最佳配置是什么? 最佳答案 poolPreparedStatements是TomcatJDBC连接池的设置,cachePrepStmts是Connector/J告诉MySQL缓存准备好的语句的设置。完全不同的两件事。cachePrepStmts是针对每个连接的设置,但Connector/J并不关心它是连接到数据库连接池还是直接连

java - 如果我关闭 PreparedStatement,数据库中的缓存会丢失吗?

PreparedStatmentps=null;publicvoidexecuteQueries(){try{ps=conn.prepareStatement(Query1);//ExecuteQuery1hereanddotheprocessing.ps=conn.prepareStatement(Query2);//ExecuteQuery2hereanddotheprocessing.//...morequeries}catch(){}finally{ps.close();//AtthispointwouldthecachingofqueriesinDBbelost?}}在我的应

java - 我应该在 Java 中对所有数据库插入使用 PreparedStatements 吗?

在Java中将变量插入数据库之前转义变量的推荐方法是什么?据我所知,我可以使用PreparedStatement.setString()来转义数据,但是如果我不打算再次运行相同的查询,PreparedStatement似乎有点不切实际。有没有更好的方法来做到这一点而无需准备每个查询? 最佳答案 是的,对所有内容都使用准备好的语句。它们被解析一次。它们不受SQL注入(inject)攻击。它们是更好的设计,因为您必须考虑您的SQL及其使用方式。如果您认为它们只使用一次,那么您就没有着眼于大局。总有一天,您的数据或您的应用程序会发生变化。

Java PreparedStatement 和 ON DUPLICATE KEY UPDATE : how do I know whether row was inserted or updated?

如果有以下代码,我如何知道execute()方法是导致插入还是更新?Connectionc=DriverManager.getConnection(connectionString);PreparedStatementst=c.prepareStatement("INSERTINTO`table`(`field1`)VALUES(?)ONDUPLICATEKEYUPDATEid=LAST_INSERT_ID(id);");st.setString(1,"somevalue");st.execute();提前致谢。 最佳答案 考虑以下

java - JDBC PreparedStatement 始终返回 1 作为自动生成的键

这个问题在这里已经有了答案:IsthereawaytoretrievetheautoincrementIDfromapreparedstatement(5个答案)关闭6年前。我有这段代码试图在数据库中插入一条记录:try{Connectionconn=getConnection();Stringsql="INSERTINTOmyTable(userId,content,timestamp)VALUES(?,?,NOW())";PreparedStatementst=conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);st

java - java中utf8的问题

我有下表:createtabletest(fnamechar(20)charactersetutf8collateutf8_turkish_ci,idintprimarykey);我正在插入数据如下:resultSet.executeQuery("setnameeutf8");preparedStatement=connection.prepareStatement("insertintotest(fname)values(?)");preparedStatement.setstring(1,"alis");preparedStatement.executeUpdate();但是当我检

java - JDBC:将日期值插入 MySQL

我想知道如何使用JavaJDBC将日期值设置为MySQL数据库。以下是我的代码。StringlastCrawlDate="2014-01-28"PreparedStatementp=con.prepareStatement("insertintoJsonData(last_crawl_date)values(?))");p.setDate(1,Date.valueOf(lastCrawlDate));如您所见,lastCrawlDate是一个String,格式为yyyy/mm/dd。以下是我的表的外观以及Date字段的定义方式。我该怎么做? 最佳答案

java - 尝试执行 PreparedStatement 时出现 MySQLSyntaxErrorException

这个问题在这里已经有了答案:MySQLSyntaxErrorExceptionnear"?"whentryingtoexecutePreparedStatement(2个答案)关闭5年前。我尝试使用以下方法使用JDBC使用PreparedStatement插入userId(int)和userName(String):publicbooleansaveUser(intuserId,StringuserName){booleansaveStatus=false;try{connection.setAutoCommit(true);Stringsql="insertintotesttable