连接数据库

问题描述:

任何人都可以帮助我如何将我的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

你会得到什么错误? – sfat 2011-06-03 09:08:43

+0

“不工作”是什么样子?帮助我们帮助你 - 提供一些有价值的信息。我建议您重构该代码以从Swing中分离SQL。正如所写,这段代码不会很有用。 – duffymo 2011-06-03 09:09:29

+0

作为一个评论...处理事件时打开数据库连接是非常不好的做法。隔离这段代码并重用它...查看DAO模式。 – 2011-06-03 09:11:03

有问题的连接代码:

url = jdbc:mysql://localhost:3306/Marketing 
db = Marketing 

url + db = jdbc:mysql://localhost:3306/MarketingMarketing 

在这里你必须删除一个额外的营销

+0

是的我现在已经注意到它的所有建议,它是不正确的代码,所以我改变了它,但我仍然无法提交我插入的值......它不保存到数据库。 – 2011-06-06 03:09:54

的一个问题,我可以看到马上就是你的PreparedStatement预计5个参数(1 - 5),但你只设置3! 其次,我不确定为什么当你的数据库URL已经包含数据库名称时,你使用DriverManager.getConnection(url + db,...),所以只使用DriverManager.getConnection(url,user,pass)。 尽管如此,如果你能澄清究竟有什么不起作用,这将是一件好事。

+0

谢谢,我没有注意到这些参数。我已经更正了它,并且用您的建议更改了DriverManager代码,但我仍然得到相同的错误。我的错误是,我无法保存所有的值到数据库,虽然我成功连接。提交数据时出错。 – 2011-06-06 02:51:08

的错误是在此声明:

con = DriverManager.getConnection(url + db, user, pass); 

getConnection方法连接到数据库在第一个参数中指定的url上。在这里,您将名为urldb的两个变量组合起来,因此您的连接网址将变为:jdbc:mysql://localhost:3306/MarketingMarketing这可能不是您想要的。只能使用url而不是url + db

+0

谢谢..我已经改变它,但仍然得到相同的错误..“无法提交数据”。我无法提交我插入的值... – 2011-06-06 03:07:05