2013-08-28 94 views
2

我是編程新手,我正在嘗試使用NetBeans IDE創建一個小型Java swing應用程序,並且我設計了表單並創建了一個表格,我使用了以下代碼從表單數據插入到數據庫中,但我得到了許多錯誤,請幫我糾正這個代碼:如何將數據從文本框插入到mysql數據庫java-netbeans

import java.sql.*; 
public class db 
{ 
    static final String JDBC_DRIVER="com.mysql.jdbc.Driver"; 
    static final String DB_URL = "jdbc:mysql://localhost:3306/userdb"; 
    static final String USER="root"; 
    static final String PASS="toor"; 

    Connection conn = null; 
    Statement stmt = null; 
    static final String d_unit=jTextField2.getText(); 
    static final String d_name=jTextField3.getText(); 
    static final String d_dob=jDateChooser2.getText(); 
    //static final String d_gender="gender"; 
    static final String d_age=jTextField4.getText(); 
    static final String d_doorno=jTextField5.getText(); 
    static final String d_street=jTextField6.getText(); 
    static final String d_vc=jTextField7.getText(); 
    static final String d_district=jTextField8.getText(); 
    static final String d_pin=jTextField9.getText(); 
    static final String d_phone=jTextField10.getText(); 
    static final String d_mail=jTextField11.getText(); 
    static final String d_occupations=jTextField12.getText(); 
    try 
    { 
    Class.forName("com.mysql.jdbc.Driver"); 
    conn=DriverManager.getConnection(DB_URL,USER,PASS); 
    stmt = conn.createStatement(); 
    stmt.executeUpdate("insert into donors (unit,name,dob,age,doorno,street,vc,district,pin,phone,mail,occupation) values('"+d_unit+"','"+d_name+"','"+d_dob+"','"+d_age+"','"+d_doorno+"','"+d_street+"','"+d_vc+"','"+d_district+"','"+d_pin+"','"+d_phone+"','"+d_mail+"','"+d_occupations+"')"); 
    JOptionPane.showMessageDialog(null,"Inserted Successfully!"); 
    } 
    catch(Exception e) 
    {  } 

    } 
+0

堆棧跟蹤,請 – Gerret

+0

@Gerret我覺得這裏的問題是編譯時錯誤。 – Axel

+0

您將所有值作爲'VARCHAR'插入。這些實際上是否定義爲數據庫中的變種?例如'doorno'或'age'看起來像整數。我也強烈建議使用'PreparedStatement'而不是'Statement'。請參閱[使用PreparedStatement](http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html) – dic19

回答

1

您不得使用final String因爲,那你就不能修改這些字符串和其他代碼是正確的,但我認爲你可以使用該行中的?

String sql="INSERT INTO ´donors´ (unit,name) VALUES (?,?)"; 
    //put the rest of the sentence 
     try { 
     PreparedStatement pdt = cn.prepareStatement(sql); 
     pdt.setString(1, jTextField2.getText(); 
     pdt.setString(2, jTextField3.getText(); 
     //put the rest of the code 
     int n1=pdt.executeUpdate(); 
     if(n1>0) 
     { 
     JOptionPane.showMessageDialog(null,"Inserted Successfully!"); 
     } 
     }catch (SQLException ex) { } 

那麼,這是最大的方法,但最正確的。我希望這有幫助。

+0

我試了你的方法插入數據到MySQL表中,但仍然無法插入數據我在這裏得到很多錯誤是我的完整代碼粘貼可以請你幫我解決這個問題? 這裏是我的pastie [鏈接](http://pastebin.com/d0D2S0ru) –

+0

好吧,但我需要的行,你有錯誤和錯誤種類的例外 – WearFox

+0

這是導致錯誤的線和對應的錯誤 static final String JDBC_DRIVER =「com.mysql.jdbc.Driver」;/*非法表達式開始*/ Class.forName(「com.mysql.jdbc.Driver」);/*非法啓動類型*/ conn = DriverManager.getConnection(DB_URL,USER,PASS);/*找不到符號*/ stmt = conn。的createStatement();/*不報告SQL異常必須捕獲​​或拋出*/ PreparedStatement的PDT = conn.prepareStatement(SQL);/*不報告SQL異常必須捕獲​​或拋出*/ pdt.setString(1,jTextField2中。 getText());/*標識符預期*/ 仍然 –

0

繼續嘗試這樣的簡單性和不易出錯

String sql = "INSERT INTO donors(unit,name,dob,age,doorno,street,vc,district,pin,phone,mail,occupation) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)"; 
stmt.executeUpdate(sql); 
1
private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {           
    String itemCode = txtItemCode.getText(); 
    String itemName = txtItemName.getText(); 
    String unitPrice = txtUnitPrice.getText(); 
    String qty = txtQty.getText(); 
    String query = "insert into items values ('"+itemCode+"','"+itemName+"','"+unitPrice+"','"+qty+"')"; 
    System.out.println(query); 


    try { 
     Connection c = DBClass.getConnection(); 
     Statement stmt = c.createStatement(); 
     stmt.executeUpdate(query); 
     JOptionPane.showMessageDialog(this, "Saved"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

// DBClass

import java.sql.Connection; 
import java.sql.DriverManager; 

/** 
* 
* @author Nadun 
*/ 
public class DBClass { 

    static private Connection connection; 

    public static Connection getConnection() throws Exception{ 
     if(connection == null){ 
      //JDBC 
      Class.forName("com.mysql.jdbc.Driver"); 
      connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/stock", "root", "123"); 
     } 
     return connection; 
    } 

} 
1

一切看起來都沒有問題。也許麻煩在你的MySQL數據庫?

檢查你行的MySQL的數據類型,如果當前行中的數據類型是「int」,那麼就應該是這樣的

try 
{ 
Class.forName("com.mysql.jdbc.Driver"); 
conn=DriverManager.getConnection(DB_URL,USER,PASS); 
stmt = conn.createStatement(); 
stmt.executeUpdate("insert into donors (name, age) values('"+d_name+"',,'"+Integer.valueOf(d_age.getText().toString())+"')"); 
JOptionPane.showMessageDialog(null,"Inserted Successfully!"); 
} 
catch(Exception e){  } 

} 

你應該小心的數據類型。如果你的mysql行是int類型,那麼在你的java中你也應該給它int time。

我猜你的數據類型是「name」行是使用字符串的文本,而你的數據類型是「age」行是int嗎?

我檢查你的代碼是從你的java給你的int mysql行的字符串值。那是錯誤。

所以,你應該的字符串轉換成整數第一

Integer.valueOf(d_age.getText().toString()); 
相關問題