java - 数据写入错误

标签 java mysql sql jdbc

我正在将一些数据插入到 mySql 数据库中。由于某种未知的原因,数据没有插入到我的表中。这对于 SQLITE 来说效果很好。 这是我的代码:

try {

            Class.forName("com.mysql.jdbc.Driver");

              Connection conn = DriverManager.getConnection(url, username, password);



            String query1 = "insert into Project (uniqueid,name,address,startingdate,estcompletion,engname) values(?,?,?,?,?,?)";
            String query2 = "insert into EngineerData (UniqueId,Name,Password) values(?,?,?)";
            String query3 = "insert into " +tableName +" (UniqueId,Category,Item,EstimatedQuantity,Unit,UnitPrice,TotalPrice,TotalSpent) values(?,?,?,?,?,?,?,?)";
            String query4 = "insert into ProjectImages (uniqueId, Path) values(?,?)";

            PreparedStatement pst1=  conn.prepareStatement(query1);
            PreparedStatement pst2 = conn.prepareStatement(query2);
            PreparedStatement pst3 = conn.prepareStatement(query3);
            PreparedStatement pst4 = conn.prepareStatement(query4);

            pst1.setInt(1, uniqueID);
            pst1.setString(2, projectName.getText());
            pst1.setString(3, address.getText());
            pst1.setString(4, day1.getText()+"/"+month1.getText()+"/"+year1.getText());
            pst1.setString(5, day2.getText()+"/"+month2.getText()+"/"+year2.getText());
            pst1.setString(6, engineerName.getText());

            pst2.setInt(1, uniqueID);
            pst2.setString(2, engineerName.getText());
            pst2.setString(3, engineerPassword.getText());

            try{
            for (int j = 0; j < table.getRowCount(); j++ ){

                pst3.setInt(1, uniqueID);
                pst3.setString(2, table.getValueAt(j, 0).toString());
                pst3.setString(3, table.getValueAt(j, 1).toString());
                pst3.setString(4, table.getValueAt(j, 2).toString());
                pst3.setString(5, table.getValueAt(j, 3).toString());
                pst3.setString(6, table.getValueAt(j, 4).toString());
                pst3.setString(7, table.getValueAt(j, 5).toString());

                pst3.setDouble(8, 0.0);
                pst3.execute();

            }}catch(Exception e3){
                /*JOptionPane.showMessageDialog(null, e3);
                 * 
                 */
            }

            pst4.setInt(1, uniqueID);
            pst4.setString(2, null);

            pst1.execute();
            pst2.execute();
            pst4.execute();

            System.out.println(pst1.toString());
            System.out.println(pst2.toString());

            pst1.close();
            pst2.close();
            pst3.close();
            pst4.close();



            conn.close();  

            } 

最佳答案

您应该省略自动生成的列“uniqueID”并重写您的代码。 例如。

String query4 = "insert into ProjectImages (Path) values(?)";

另一种方法 - 为自动生成的列传递空值。例如。

String query4 = "insert into ProjectImages (uniqueId, Path) values(null,?)";

关于java - 数据写入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30637504/

相关文章:

java - Parcelable:在 fragment 旋转时解码错误时未找到类

mysql - 具有一对多左连接的 SQL 查询排除任何不存在的

mysql - 添加 FULLTEXT 索引 : didn't make much difference , 是否会索引旧数据?

mysql - 删除数据库中最后插入的 Id

java - 将ANTLR生成的class文件合并成一个jar文件

java - 每年定时器不起作用

java - 如何在 Java 中创建 "package"?

sql - 如何使用键值对列表查询数据库

sql - 在Oracle ANSI连接中混合 "USING"和 "ON"

mysql - 当输入值为 NULL 时,多个 CASE 语句不起作用