java - 从java插入查询到mysql数据库不工作

标签 java mysql jdbc

我对以下方法有疑问。该方法生成有效的查询,但无法插入表监视器。

方法:

public void upLoadData(String table, String[] dbCols,List<LinkedHashMap<String,String>> values){
        String wq = "INSERT INTO "+table+" (";
        for (int j = 0; j < dbCols.length; j++) {
            wq+=dbCols[j]+",";
        }
        wq = wq.replaceAll(",$", ""); //Remove comma from the end of line.
        wq+=") VALUES";

        for (LinkedHashMap<String, String> val : values) {
            wq+="(";
            for (int i = 0; i < dbCols.length; i++) {
                wq+="'"+val.get(dbCols[i])+"',";
            }
            wq = wq.replaceAll(",$","");
            wq+="),";
        }
        wq = wq.replaceAll(",$", ";");

        System.out.println(wq);
        myDB.DBInsert(wq, MyDBPool.getConnections());
}

以及插入方法:

public void DBInsert(String query, Connection conn){
    Statement stm;
    try{
        stm = conn.createStatement(); // conn from db connection pool
        stm.executeUpdate(query);
    }catch(SQLException ex){ex.getLocalizedMessage();}
}

输出为:

INSERT INTO monitor (id,arr_date,company,disp_size,disp_type,producer,prod_type,color,cond_cat,comments) 
VALUES('H13/2:3445','2015-11-15','Valami','jó','21','Dell','T32','fekete','B','sadsadasdasd'),
('H14:/3:5567','2015-11-15','Nincs','TFT','19','HP','B32','piros','A','sadsadasd'),
('H13/8:3321','2015-11-15','CCCP','CRT','19','nincs','T24','fehér','D','sadsadsad');

手动(PhPMyAdmin)插入没有问题。 我使用 JDBC、Hikari dbpool、XAMPP v3.2.1

任何帮助将不胜感激。谢谢!

最佳答案

您没有提交,也没有关闭您的Statement(或Connection )。您可以使用 try-with-resources close并添加一个提交,例如

public void DBInsert(String query, Connection conn) {
    try (Statement stm = conn.createStatement()){
        stm.executeUpdate(query);
        conn.commit();
    } catch (SQLException ex) {
        ex.getLocalizedMessage();
    } finally {
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

此外,我强烈建议您使用 PreparedStatement占位符(或绑定(bind)参数)出于性能安全原因而不是将插入构建为 String

关于java - 从java插入查询到mysql数据库不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33717466/

相关文章:

mysql - 在单个 MySQL 查询中,我可以从具有主键数组的字段返回字符串数组吗

sql - 将带有重复项的 MySQL 表迁移到带有 UNIQUE 约束的另一个表的最佳方法

java - 无法使用以下凭据连接到数据库 :jdbc:oracle:thin@:smthing

PHP , mysql - 注册和登录- 用户登录

postgresql jdbc、pgobject可用类型、数组类型

java - Android 上的可移植 JDBC 与 SQLite

java - IBM-Worklight : Failed starting project

java - 通过 SSL 保护 Tomcat/Axis2 Web 服务的问题

Java eclipse包编译错误

java - 有没有免费/开源图像编辑器或java程序可以使gif图标图像中的白色透明?