草庐IT

PreparedStatement

全部标签

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

java - 使用 PreparedStatement 在 Java 中插入 blob 数据

我正在使用以下代码在数据库中插入图像。它将存储两个图像,因为我使用了PreparedStatement和Statement。当我运行这段代码时,我在数据库中得到了两张图片。但这两个图像是不同的,我不明白为什么。使用PreparedStatement,它可以完美地插入。我希望在使用Statement时拥有相同的图像。为什么它现在不起作用,我怎样才能让它起作用?importjava.io.*;importjava.sql.*;publicclassImage{publicstaticvoidmain(Stringargs[])throwsException{System.out.print

java - JDBC PreparedStatement Batch 在出错时继续插入

你好,我在Java中创建了一个带有PreparedStatement的批处理for(Itemitem:list){ps.setString(1,item.getSome());ps.setString(2,item.getFoo());ps.setString(3,item.getBatman());statement.addBatch();if(++count%batchSize==0){results=ps.executeBatch();//executeparcialbatchif(results!=null)System.out.println(results.length);

java - JDBC PreparedStatement - 使用相同的参数,这可能吗?

我正在使用“插入或更新”查询,如下所示:Stringsql="INSERTINTOservlets(path,applicationId,startTime,numOfRequests,totalResponseTime,totalBytes)"+"VALUES(?,?,NOW(),1,?,?)"+"ONDUPLICATEKEYUPDATEnumOfRequests=numOfRequests+1,"+"totalResponseTime=totalResponseTime+?,totalBytes=totalBytes+?";我正在使用准备好的语句并按以下方式用相关参数填充它:sta