当前位置: 首页 > 面试题库 >

将准备好的语句与JDBCTemplate一起使用

冷夜洛
2023-03-14
问题内容

我正在使用JDBC模板,并希望使用准备好的语句从数据库中读取数据。我遍历.csv文件中的许多行,并且在每一行上执行一些具有相应值的SQL选择查询。

我想加快从数据库中的读取速度,但是我不知道如何使JDBC模板与准备好的语句一起使用。

有PreparedStatementCreator和PreparedStatementSetter。如本例所示,它们都是使用匿名内部类创建的。但是在PreparedStatementSetter类中,我无权访问要在prepare语句中设置的值。

由于要遍历.csv文件,因此我无法将它们硬编码为字符串,因为我不知道它们。我也不能将它们传递给PreparedStatementSetter,因为构造函数没有参数。而将我的价值观设定为最终也是愚蠢的。

我习惯于创建准备好的语句非常简单。就像是

PreparedStatement updateSales = con.prepareStatement(
    "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? ");
updateSales.setInt(1, 75); 
updateSales.setString(2, "Colombian"); 
updateSales.executeUpdate():

就像本Java教程中一样。


问题答案:

我现在尝试使用进行选择语句PreparedStatement,但事实证明它并不比Jdbc模板快。也许,正如mezmo建议的那样,它会自动创建准备好的语句。

无论如何,我的sql SELECT这么慢的原因是另一个。在该WHERE子句中,我一直想使用operator
LIKE,而我想做的只是查找完全匹配的对象。正如我发现的那样,LIKE搜索模式是非常缓慢的。

我现在正在使用运算符,=并且速度更快。



 类似资料:
  • 我想使用带有LIKE关键字的java准备语句。我正在尝试匹配日期字符串。这是我的密码。 它给出了以下例外。 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,了解在“?”附近使用的正确语法?和s.date一样?订单截止日期DESC LIMIT 1'第1行

  • 我有以下准备的一个准备好的声明失败了... 我在我的第一份准备好的声明中几乎有同样的准备,而且它进行得很好。我不确定是否我有两个准备好的声明,如果这是造成一个问题,或情况可能是什么? 现在我有个错误... 更新-可能的内部连接,像这样?

  • 我有一个将列名映射到值的。要更新的列事先未知,在运行时决定。 例如< code>map = {col1: "value1 ",col2: "value2"}。 我想执行一个< code>UPDATE查询,用这些列将表更新为相应的值。我能做以下事情吗?如果没有,有没有一种优雅的方法可以不用手动构建查询?

  • 其思想是创建一个准备好的语句将信息插入到用户表中,然后从生成的内容中获取insert_id以在另一个insert语句中使用 这是我的注册脚本的一个版本 第一条准备好的语句正确运行并向表中插入信息,之后成功回显$RETURNID变量。脚本中的下一个是我准备好的第二条语句,当它试图运行im时,得到的错误是: 致命错误:对第17行d:\filepath\register.php中的非对象调用成员函数bi

  • 问题内容: 我刚刚开始做我的第一个项目(很有趣)。我正在学习PHP和MySQL,并且已经完成了我的第一个正常工作的应用程序。它可以工作,但是我现在正在学习如何保护应用程序的安全,从而防止SQL注入。我大约有50多个PHP文件来管理与MySQL数据库的交互。它们看起来都是这样的: 这是我在整个应用程序中用于向数据库读写数据的格式。如果我需要将它们更改为准备好的语句,而不是在其中插入任何信息,而只是在