Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Nashorn在java程序内执行java代码_Java_Nashorn - Fatal编程技术网

使用Nashorn在java程序内执行java代码

使用Nashorn在java程序内执行java代码,java,nashorn,Java,Nashorn,我已经编写了一个java代码,它将从表中获取数据并显示输出。这基本上是一个脚本,我想通过Nashorn运行 下面是我正在尝试的代码 public static void main(String args[]) throws ScriptException{ ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); String script3 = "count = 0; "

我已经编写了一个java代码,它将从表中获取数据并显示输出。这基本上是一个脚本,我想通过Nashorn运行

下面是我正在尝试的代码

public static void main(String args[]) throws ScriptException{

    ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");

    String script3 = "count = 0; "
            + "keyList = new java.util.ArrayList; "
            + "valueList = new java.util.ArrayList;"
            + "keyList.add('username'); "
            + "keyList.add('password'); "
            + "valueList.add('admin'); "
            + "valueList.add('admin');"
            + "java.lang.System.out.println('keyList :: ' + keyList);   "
            + "java.lang.System.out.println('KeyValue :: ' + valueList);"
            + "sql = \" select * from credentials where 'isActive'='1'\";"  
            + "java.lang.System.out.println('keyList.size() :: ' + keyList.size());"
            + "for (i = 0; i < keyList.size(); i++){"
            + " sql += and \\' + keyList.get(i) + \\' = \\' + valueList.get(i) + \\';}"                                                     
            + "java.lang.System.out.println('Search SQL : ' + sql); "
            + "con = GetConnected.connectToDatabase('my_db');"
            + "ps = con.prepareStatement(sql); "
            + "ps.setString(1, \"1\");"
            + "rs = ps.executeQuery(); "
            + "if (rs.isBeforeFirst()) {"
            + " count=1; "
            + " java.lang.System.out.println('Data is present in database'); "
            + "}"
            + "else "
            + " java.lang.System.out.println('Data is not present in database'); "
            + " rs.close(); " + " st.close(); " + " con.close(); ";

    engine.eval(script3);
}

that+将继续添加,直到脚本结束。

查看
集合,对于每个
部分,它可能会为您提供提示。对于每个部分,我无法将arraylist(键列表和值列表)中的值添加到sqlI,我已解决了使用迭代器的问题,谢谢。
Exception in thread "main" javax.script.ScriptException: <eval>:1:904 Missing close quote
count = 0; keyList = new java.util.ArrayList; valueList = new java.util.ArrayList;keyList.add('username'); keyList.add('password'); valueList.add('admin'); valueList.add('admin');java.lang.System.out.println('keyList :: ' + keyList);   java.lang.System.out.println('KeyValue :: ' + valueList);sql = " select * from credentials where 'isActive'='1'";java.lang.System.out.println('keyList.size() :: ' + keyList.size());for (i = 0; i < keyList.size(); i++){  sql += and \' + keyList.get(i) + \' = \' + valueList.get(i) + \';}java.lang.System.out.println('Search SQL : ' + sql); con = GetConnected.connectToDatabase('my_db');ps = con.prepareStatement(sql); ps.setString(1, "1");rs = ps.executeQuery(); if (rs.isBeforeFirst()) { count=1;  java.lang.System.out.println('Data is present in database'); }else  java.lang.System.out.println('Data is not present in database');  rs.close();  st.close();  con.close(); 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ^ in <eval> at line number 1 at column number 904
at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:467)
at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:534)
at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:521)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:399)
at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
at com.engine.nashorn.Test.main(Test.java:87)
Caused by: jdk.nashorn.internal.runtime.ParserException: <eval>:1:904 Missing close quote
count = 0; keyList = new java.util.ArrayList; valueList = new java.util.ArrayList;keyList.add('username'); keyList.add('password'); valueList.add('admin'); valueList.add('admin');java.lang.System.out.println('keyList :: ' + keyList);   java.lang.System.out.println('KeyValue :: ' + valueList);sql = " select * from credentials where 'isActive'='1'";java.lang.System.out.println('keyList.size() :: ' + keyList.size());for (i = 0; i < keyList.size(); i++){  sql += and \' + keyList.get(i) + \' = \' + valueList.get(i) + \';}java.lang.System.out.println('Search SQL : ' + sql); con = GetConnected.connectToDatabase('my_db');ps = con.prepareStatement(sql); ps.setString(1, "1");rs = ps.executeQuery(); if (rs.isBeforeFirst()) { count=1;  java.lang.System.out.println('Data is present in database'); }else  java.lang.System.out.println('Data is not present in database');  rs.close();  st.close();  con.close(); 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ^
at jdk.nashorn.internal.parser.Lexer.error(Lexer.java:1706)
at jdk.nashorn.internal.parser.Lexer.scanString(Lexer.java:988)
at jdk.nashorn.internal.parser.Lexer.lexify(Lexer.java:1615)
at jdk.nashorn.internal.parser.AbstractParser.getToken(AbstractParser.java:132)
at jdk.nashorn.internal.parser.AbstractParser.nextToken(AbstractParser.java:211)
at jdk.nashorn.internal.parser.AbstractParser.nextOrEOL(AbstractParser.java:170)
at jdk.nashorn.internal.parser.AbstractParser.next(AbstractParser.java:157)
at jdk.nashorn.internal.parser.Parser.parse(Parser.java:281)
at jdk.nashorn.internal.parser.Parser.parse(Parser.java:249)
at jdk.nashorn.internal.runtime.Context.compile(Context.java:1286)
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:1253)
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:625)
at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:532)
... 5 more
sql += and \\' + keyList.get(i) + \\' = \\' + valueList.get(i) + \\';}"