java - java中通过字符串连接生成查询——变量值不被替换

标签 java database csv concatenation

我有以下代码作为从 CSV 文件读取并通过生成插入语句并执行它们将其内容存储到数据库中的方法的一部分。

 ....
 try 
    {
        while( (strLine = br.readLine()) != null)
        {
            query = baseQuery;
            st = new StringTokenizer(strLine, ",");   
            while(st.hasMoreTokens())
            {
                token = st.nextToken();
                if("TIMESTAMP".equals(values.get(tokenNumber)))
                    query += "'" + GeneralMethods.dateFormat(token) + "' , ";
                else
                    query += "'" + token + "' , ";
            }
            query = query.substring(0, query.length()-2) + ")";
            ds.insertData(query );
        }
    } catch (IOException e) 
    {            
        logger.error("IOException Occured while trying to read lines of CSV file: \n  " + e.getMessage());
        status = false;
    }

一切正常,除了查询是用空值生成的。这被打印到日志中:

Failed to execute query: INSERT INTO c1_ds1 ( TIME , USER ) VALUES ('' , '' )

我认为问题出在这两行:

if("TIMESTAMP".equals(values.get(tokenNumber)))
                    query += "'" + GeneralMethods.dateFormat(token) + "' , ";
                else
                    query += "'" + token + "' , ";

我已在日志中打印了 (token) 变量,并且它按照应有的方式从 CSV 文件中获取值。 有谁知道问题出在哪里吗?

我也尝试过:

query += "'"; query += token; 

最佳答案

查看PreparedStatement而不是通过字符串连接您的查询。这将使数据库驱动程序为您处理转义和转换值。

关于java - java中通过字符串连接生成查询——变量值不被替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638653/

相关文章:

java.lang.ClassNotFoundException : com. google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier$Builder

Java 服务器-客户端 readLine() 方法

database - 我可以设置和获取对象的托管 JSON 数据库

python - 坏数据上的 Pandas 数据帧 read_csv

powershell - 从 powershell 中的字符串中删除数字

c# - 将 html 字符串写入 csv 文件

java - 如何在android中消失按钮

java - 在 java.util.Properties$LineReader.readLine(Properties.java :418) for Spring Security) 处获取问题 java.lang.NullPointerException

java - MySQL 查询将多行转换为一行

php - 社交媒体数据库设计: Should user-centric tables be created? 或包含相关数据的主表?