public ArrayList<String> findLocationOfXMLDocumentsWithSkills(ArrayList<String> skillsToFind){
TreeMap<Integer, ArrayList<String>> fileLocationToNumberOfHits = new TreeMap<Integer, ArrayList<String>>();
def sql = Sql.newInstance(/jdbc:sqlite:C:\Users\pdfFileSystem.db/, "org.sqlite.JDBC")
sql.execute('CREATE TABLE IF NOT EXISTS skillList(SKILL TEXT NOT NULL, xmlFile0 TEXT, xmlFile1 TEXT, xmlFile2 TEXT)')
fileLocationToNumberOfHits.put(1, new ArrayList<String>());
for(String skill: skillsToFind){
skill = skill.toUpperCase();
def query = 'SELECT * FROM skillList WHERE SKILL="' + skill + '"'
println query
sql.eachRow(query) { row ->
...
}
...
}
...
}
所以,这是我尝试使用Grails运行的代码。
对于除for循环的最后一次迭代以外的所有迭代,println查询将打印
"ELECT * FROM skillList WHERE SKILL ="{skill}
其中{技能}被技能所取代。
为什么用"
替换字符串的第一个字符而不是将其添加到字符串的末尾?
我有同样的代码在同一个类的其他函数中运行,它可以工作 完全应该。
有谁知道发生了什么事?
答案 0 :(得分:0)
替换:
def query = 'SELECT * FROM skillList WHERE SKILL="' + skill + '"'
有:
def query = "SELECT * FROM skillList WHERE SKILL='$skill'"
更多关于字符串和GStrings in groovy的信息: http://groovy.codehaus.org/Strings+and+GString
答案 1 :(得分:0)
它与我用来生成skillToFind的分割函数有关。
我在从我网站上的textArea生成的String上使用了.split(&#39; \ n&#39;)。 结果字符串在字符串的末尾有一些额外的字符(除了最后一个字符串,因为它没有被拆分)。
我刚从字符串中删除了该字符,现在一切正常。
谢谢大家的帮助!