Rumah > pangkalan data > tutorial mysql > Mengapa Java PreparedStatement Saya Membuang Ralat Sintaks, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Java PreparedStatement Saya Membuang Ralat Sintaks, dan Bagaimana Saya Boleh Membetulkannya?

DDD
Lepaskan: 2024-11-28 21:46:13
asal
622 orang telah melayarinya

Why Does My Java PreparedStatement Throw a Syntax Error, and How Can I Fix It?

Ralat Sintaks PreparedStatement

Apabila menggunakan Java PreparedStatements, adalah penting untuk memastikan sintaks yang betul untuk mengelakkan ralat. Coretan kod yang disediakan menghadapi ralat sintaks disebabkan kesilapan panggilan kaedah.

Kaedah select1 menerima sql pernyataan yang disediakan dan randNum integer dan cuba melaksanakannya. Walau bagaimanapun, mesej ralat menunjukkan isu sintaks dengan pernyataan SQL:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?)' at line 1
Salin selepas log masuk

Isunya terletak pada pernyataan pulangan dalam kaedah select1:

return this.stmt.executeQuery(sql);
Salin selepas log masuk

Barisan ini cuba untuk dilaksanakan secara salah pernyataan SQL sebagai pernyataan biasa dan bukannya pernyataan yang disediakan. Kaedah yang betul untuk melaksanakan pernyataan yang disediakan ialah executeQuery().

Untuk menyelesaikan ralat, gantikan kod dengan panggilan executeQuery() yang betul:

return this.stmt.executeQuery();
Salin selepas log masuk

Dikemas kini Kod:

public ResultSet select1(String sql, int randNum) {
    try {
        this.stmt = con.prepareStatement(sql);
        stmt.setInt(1, randNum);
        return this.stmt.executeQuery(); // Call PreparedStatement.executeQuery
    } catch (SQLException e) {
        e.printStackTrace();
        return null;
    }
}
Salin selepas log masuk

Nota:

Sintaks untuk pertanyaan SQL juga mestilah betul. Dalam kes ini, tanda belakang yang hilang di sekitar nilai dalam klausa WHERE telah menyebabkan ralat. Pernyataan SQL yang betul hendaklah:

String selectSql1 = "SELECT `value` FROM `sampling_numbers` WHERE `value` < ?";
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Java PreparedStatement Saya Membuang Ralat Sintaks, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan