我可以使用 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/