2011-02-24 62 views
0

美好的一天!Java使用Jconnect

为了访问MySQL服务器,我用JCONNECT和我的代码如下:

public AddBooks() { 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      String url = "jdbc:mysql://localhost:3306/catalog"; 
      conn = DriverManager.getConnection(url,"root","upittc"); 
      stmt = conn.prepareStatement("INSERT INTO books VALUES(?,?,?,?,?,?,?,?,?,?,)"); 

     } catch (Exception exc) { 
      JOptionPane.showMessageDialog(null, exc.getMessage()); 
     } 
     initComponents(); 
    } 

为了把数据库中的数据,我用下面的代码:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
     try { 
       stmt.setString(1, jTextField0.getText()); 
       stmt.setString(2, jTextField1.getText()); 
       stmt.setString(3, jTextField2.getText()); 
       stmt.setString(4, jTextField3.getText()); 
       stmt.setString(5, jTextField4.getText()); 
       stmt.setString(6, Jan2.getSelectedItem().toString()); 
       stmt.setString(7, Jan3.getSelectedItem().toString()); 
       stmt.setString(8, jTextField5.getText()); 
       stmt.setString(9, jTextField6.getText()); 
       stmt.setString(10, jTextField8.getText()); 
       stmt.executeUpdate(); 
       JOptionPane.showMessageDialog(null, "Save Successful!"); 

     } catch (Exception ex) { 
       JOptionPane.showMessageDialog(null, ex); 
     } 
} 

但有上排1 列数错误不匹配的值是在ROW是什么意思? 请指教。谢谢。

+0

请提及错误和堆栈跟踪。 – asgs 2011-02-24 06:56:36

+0

@asgs什么是堆栈跟踪? – newbie 2011-02-24 06:57:37

+0

你应该改变你的insert语句来指定你要添加的列,因为第一个是自动增量,你不想对它做任何事情。 – 2011-02-24 07:11:24

回答

1

如果该字段是自动递增,你不应该赋予什么呢,从SQL预处理语句字符串中删除它,只是设置其他的一切,自动增量将本身做的工作。

PreparedStatement stmt = connect.prepareStatement("INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...) "); 

摆脱第一列的有:

PreparedStatement stmt = connect.prepareStatement("INSERT INTO table_name (column2, column3,...) VALUES (value2, value3,...) "); 

和你以后用问号代替值和设置。

  stmt.setString(1, jTextField1.getText()); 
      stmt.setString(2, jTextField2.getText()); 
      stmt.setString(3, jTextField3.getText()); 
      stmt.setString(4, jTextField4.getText()); 
      stmt.setString(5, Jan2.getSelectedItem().toString()); 
      stmt.setString(6, Jan3.getSelectedItem().toString()); 
      stmt.setString(7, jTextField5.getText()); 
      stmt.setString(8, jTextField6.getText()); 
      stmt.setString(9, jTextField8.getText()); 
      stmt.executeUpdate(); 

注意:递减的索引(问号值的编号)。

希望有帮助!