我正在尝试使用java在mysql中进行简单的插入查询。如果它没有按照预期的方式做什么,我如何确定问题是什么:
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消息对话框输出它们来获取所需的值。它肯定会收到正确的值。所以我想可能问题出在查询中。
答案 0 :(得分:2)
您可以打印在regp构造函数中捕获的异常:
} catch (Exception e) {
e.printStackTrace();
}
您可能还希望查看预处理语句,而不是通过字符串连接构建SQL。