2013-06-19 116 views
0

我想存儲記錄但不知道該怎麼辦。 當我開始輸入客戶的詳細信息時,當時數據庫連接已成功創建,但我無法將數據存儲在數據庫中。JDBC ODBC與MS Access問題

創建數據庫的過程是正確的,但我無法輸入詳細信息,我該怎麼辦?

下面是代碼:

所有的
import java.awt.Container; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 
    import java.sql.*; 
    import javax.swing.*; 
    //package p1; 
    public abstract class New_Customer extends JFrame implements ActionListener 
    { 
    JTextField textFieldId; 
    JTextField textFieldName; 
    JTextField textFieldContactNo; 
    JLabel l1; 
    JLabel l2; 
    JLabel l3; 
    JLabel l4; 
    JLabel l5; 
JLabel l6; 
    JComboBox combo; 
    String course[] = {"Navakal","SandhyaKal","Pudhari","MidDay","Inqlab","BusinessLine","Mumbai Samachar","GujrajSamachar","KarnatakMalla","Vartahar","PunyaNagari"}; 
JButton b1; 
JButton b2; 
Container c = getContentPane(); 
New_Customer() 
{ 
    super("Shree DattaDigambar Samarth"); 
    setBounds(140,250,777,555); 
    c.setLayout(null); 
    textFieldId = new JTextField(); 
    textFieldName = new JTextField(); 
    textFieldContactNo = new JTextField(); 
    l1 = new JLabel("New Customer Entry"); 
    l2 = new JLabel("Building No"); 
    l3 = new JLabel("Customer Name"); 
    l4 = new JLabel("Contact No"); 
    l5 = new JLabel("Paper"); 
      combo = new JComboBox(course); 
    l1.setBounds(10,10,340,20); 
    l2.setBounds(10,20,140,70); 
    l3.setBounds(110,20,140,70); 
    l4.setBounds(300,50,140,20); 
    l5.setBounds(400,50,140,20);   
    textFieldId.setBounds(10,70,70,20); 
    textFieldName.setBounds(110,70,180,20); 
    textFieldContactNo.setBounds(300,70,90,20); 
      combo.setBounds(400,70,130,20); 
    b1 = new JButton("Add paper"); 
      b2 = new JButton("Ok"); 
    b1.setBounds(10,100,100,20); 
    b2.setBounds(10,160,50,20);  
      c.add(combo); 
    c.add(b1); 
    c.add(b2); 
    c.add(l1); 
    c.add(l2); 
    c.add(l3); 
    c.add(l4); 
    c.add(l5); 
    c.add(textFieldId); 
    c.add(textFieldName); 
    c.add(textFieldContactNo); 
      setVisible(true); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
      b1.addActionListener(this); 
      b2.addActionListener(this); 
} 
    public static void main(String[] args) 
    { 
     New_Customer nc=new New_Customer() {}; 
    } 
    public void actionPerformed(ActionEvent e) 
     { 

      System.out.println("You clicked the button"); 
      if(e.getSource()==b1) 
      { 

      } 
      if(e.getSource()==b2) 
      { 
       try 
       { 
        Connection con; 
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
        con = DriverManager.getConnection("jdbc:odbc:devendra"); 
        try 
        { 

         java.sql.Statement st = con.createStatement(); 
         PreparedStatement ps = con.prepareStatement(null); 
         ResultSet rs = ps.executeQuery("insert into Customer values(?,?,?,?)"); 
         while(rs.next()) 
         { 
         ps.setString(1,textFieldId.getText()); 
         ps.setString(2,textFieldName.getText()); 
         ps.setString(3,textFieldContactNo.getText()); 
         ps.setString(4,combo.getName()); 
         } 

        } 
        catch (SQLException s) 
        { 
         System.out.println("SQL code does not execute."); 
        } 
       } 
       catch (ClassNotFoundException | SQLException ee) 
       { 
        System.out.println("Error:connection not created"); 
       } 
      } 
     } 
} 
+0

什麼錯誤味精..? –

+0

爲了更好的診斷問題,把'e.printStackTrace();'放在你的catch子句中 – Bnrdo

+0

我沒有想到insert會返回任何結果? – MadProgrammer

回答

0

首先插入數據庫中的值,你應該使用executeUpdate() method。 並且此方法不返回任何ResultSet

所以更改代碼

PreparedStatement ps = con.prepareStatement("insert into Customer values(?,?,?,?)"); 

    ps.setString(1,textFieldId.getText()); 
    ps.setString(2,textFieldName.getText()); 
    ps.setString(3,textFieldContactNo.getText()); 
    ps.setString(4,combo.getName()); 

ps.executeUpdate(); 
+0

你有沒有得到你的解決方案。 –

+0

感謝您的幫助gauravishere ...... –

+0

不要忘記標記答案。 @Devendra –