【问题标题】:Inserting rows from excel into mysql throws JDBC exception将行从 excel 插入 mysql 引发 JDBC 异常
【发布时间】:2013-12-12 17:36:18
【问题描述】:

After taking help 正确读取 excel 日期值,我面临着另一个令我难过的问题。插入 excel 行时,VARCHAR 列的单元格引号丢失。

例如,我将一行读入 List 之类的

[1,ahsan, 2013-12-12]

然后在形成查询并执行 SQL 语句时,我得到MySQLSyntaxException。使用插入语句时如何保留(或就此为获取的数据添加单引号)。以下是我用来形成查询的代码,

Statement stmt = null;
String qry = "insert into "+ fieldValue + " (";
for (int i=0; i<sheetColumnNames.size(); i++ ) {

    if (i == (sheetColumnNames.size() -1)) {
        qry +=  sheetColumnNames.get(i) +")";
    }
    else
    {
        qry +=  sheetColumnNames.get(i) +",";
     }              }
qry += " values " ;
qry += "(";
// This code is in a Row loop                  
for (int i=0; i<rowSet.size(); i++) { 
   if (i == (rowSet.size() -1)) 
   {
       if ((row.getRowNum()+1)==(sheet.getLastRowNum()+1))
       {    
        qry +=  rowSet.get(i) +")";
       }
       else
       {
        qry +=  rowSet.get(i) +"),";
       }
    }
    else
    {


        qry +=  rowSet.get(i) +",";
    }     
} 

【问题讨论】:

    标签: java mysql jdbc apache-poi


    【解决方案1】:

    考虑使用 Prepared Statements,然后 MySQL/JDBC 可以为您处理。

    目前您的数据库也容易受到 SQL 注入的攻击。

    编辑:性能也应该更好(但不确定是否值得注意),因为假设 Excel 文件中有多行,您正在重复使用该语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多