任何人都可以帮我如何将我的java表单连接到我的mysql数据库吗? 我有以下代码,但它不起作用......
private void saveActionPerformed(java.awt.event.ActionEvent evt) {
String value1 = textField1.getText();
String value2 = textField2.getText();
String value3 = textField3.getText();
String value4 = textField4.getText();
Connection con = null;
String url = "jdbc:mysql://localhost:3306/Marketing";
String driver = "com.mysql.jdbc.Driver";
String db = "Marketing";
String user = "root";
String pass = "";
System.out.println(value1 + value2 + value3 + value4);
try {
Class.forName(driver);
con = DriverManager.getConnection(url + db, user, pass);
PreparedStatement st = con.prepareStatement("insert into clients (idclients, name, address, contact_person, contact_num) values(?,?,?,?,?)");
st.setString(2, value2);
st.setString(3, value3);
st.setString(4, value4);
st.executeUpdate();
JOptionPane.showMessageDialog(jPanel1, "Data is successfully inserted into database.");
con.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(jPanel1, "Error in submitting data!");
}
}
答案 0 :(得分:2)
我可以立即看到的一个问题是你的PreparedStatement需要5个参数(1 - 5)但你只设置3个!
其次,当您的数据库URL已包含数据库名称时,我不确定为什么使用DriverManager.getConnection(url + db ,...),因此只使用DriverManager.getConnection(url,user,pass)
。
尽管如此,如果你能澄清究竟什么不起作用会很好吗?
答案 1 :(得分:1)
连接代码存在问题:
url = jdbc:mysql://localhost:3306/Marketing
db = Marketing
url + db = jdbc:mysql://localhost:3306/MarketingMarketing
在这里你必须删除一个额外的营销
答案 2 :(得分:1)
错误在此声明中:
con = DriverManager.getConnection(url + db, user, pass);
getConnection方法连接到1st参数中指定的url上的数据库。在这里,您组合了两个名为url
和db
的变量,因此您的连接网址将变为:jdbc:mysql://localhost:3306/MarketingMarketing
,这可能不是您想要的。仅使用url
代替url + db
。