Как проверить на наличие ошибок MySQL в Java - PullRequest
0 голосов
/ 06 марта 2011

Я пытаюсь сделать простой запрос вставки в MySQL, используя Java. Как определить, в чем проблема, если она не выполняет то, что должна делать:

import java.util.*;
import java.sql.*;
import javax.swing.JOptionPane;

public class regp {

    public regp(String player, int score) {
        conc conclass = new conc();
        Connection conn = conclass.dbConnect();


        try {



            PreparedStatement fetchPlayers = conn.prepareStatement("SELECT * FROM players WHERE P_Name='" + player + "'");
            ResultSet rs = fetchPlayers.executeQuery();

            if (rs.next()) {
                JOptionPane.showMessageDialog(null, "Already Registered!");
            } else {


                PreparedStatement createPlayer = conn.prepareStatement("INSERT INTO players(P_Name, Score) VALUES('" + player + "', '" + score + "')");

                createPlayer.execute();




                JOptionPane.showMessageDialog(null, "Player: " + player + " score: " + score);


                JOptionPane.showMessageDialog(null, "Registration Successful!");

                JOptionPane.showMessageDialog(null, "Not registered!");



            }
        } catch (Exception e) {
        }

    }
}

И вот conc.java, который содержит информацию базы данных:

import java.sql.*;
import java.util.*;

public class conc {

    public conc(){
    }

       public Connection dbConnect() {
        try {
            String db_connect_string="jdbc:mysql://localhost:3306/questions";
            String db_userid="root";
            String db_password="1234";
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);


            return conn;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

Проблема в том, что я не представляю, является ли это запросом, подготовленным объявлением оператора. Одно обязательно будет работать. Часть, которая проверяет, существует ли введенный игрок или нет. Я уже проверил, получает ли функция необходимые значения, выводя их, используя диалоговое окно сообщения joptionpane. И это, безусловно, получает правильные значения. Поэтому я думаю, что, возможно, проблема в запросе.

1 Ответ

2 голосов
/ 06 марта 2011

Вы можете напечатать исключение, которое вы ловите, в конструкторе regp:

} catch (Exception e) {
    e.printStackTrace();
}

Возможно, вы захотите взглянуть на подготовленные операторы, а не создавать свой SQL с помощью конкатенации строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...