java - 在 java 中设置准备和执行查询

标签 java mysql

我可以使用 prepareStatement 在 java 中一次执行以下查询吗?

SET @totalQuestion = (SELECT QuestionVolume FROM rules ORDER BY QuestionVolume DESC LIMIT 1);
PREPARE STMT FROM 'SELECT * FROM question ORDER BY RAND() LIMIT ?';
EXECUTE STMT USING @totalQuestion;

我正在考虑的 Java 代码??? (不确定我是否可以做这样的事情?)

generateQuestion = getDb().getConnection().prepareStatement(
                "SET @totalQuestion = (SELECT QuestionVolume FROM rules ORDER BY QuestionVolume DESC LIMIT 1);\n"
                + "\n"
                + "PREPARE STMT FROM 'SELECT * FROM question ORDER BY RAND() LIMIT ?';\n"
                + "EXECUTE STMT USING @totalQuestion;");

谁能解释一下用 Java 执行查询的最佳原因是什么?

更新

我将声明更改为以下内容。

 getQuestionRule = getDb().getConnection().prepareStatement(""
                + "SELECT QuestionVolume FROM rules ORDER BY QuestionVolume DESC LIMIT 1", Statement.RETURN_GENERATED_KEYS);
 generateQuestion = getDb().getConnection().prepareStatement(
                "SELECT * FROM question ORDER BY RAND() LIMIT ?", Statement.RETURN_GENERATED_KEYS);

最佳答案

不:这是两个语句,它们不能一次执行,除非它们被组合在一个存储过程中。

关于java - 在 java 中设置准备和执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23623734/

相关文章:

mySQL DateDiff 小时按日期

java - 除了 EAR 和 EJB,我还能从 Java EE 应用服务器中获得什么,而我在 Tomcat 之类的 servlet 容器中没有?

mysql在涉及时间戳的请求中使用通配符

java - 日期格式化时无法获得所需的输出

java - 如何告诉 Gradle 在哪里寻找 javax.servlet?

php/mysql 使用多个表创建重复记录

php - 您应该在 PHP 中缓存 MySQL 连接吗?

php - 如何在单个数组中显示更多数量的数组结果?

java - 使用mysql的jdbc连接

java - 在 Android Studio 中使用 Java 居中 View