2015-05-27 2 views
0

я получить доступ к моей базе данных, которая имеет несколько полей:Java - Как получить доступ к var с динамическим именем?

  • rabbit2013
  • rabbit2014
  • rabbit2015
  • т.д.

Я пытаюсь создать программу в Java, чтобы прочитать переменную от текущего года (rabbit2015 здесь). У меня есть текущий год в моей переменной year. Как вернуть значение "rabbit"+year?

Я попытался это, но не работает:

ScriptEngineManager manager = new ScriptEngineManager(); 
ScriptEngine engine = manager.getEngineByName("js"); 
Object result = null; 
try { 
    result = engine.eval("rabbit"+year); 
} 
catch (ScriptException e){ 
    e.printStackTrace(); 
} 
System.out.println(result); 

У вас есть какие-нибудь идеи?

EDIT:

Error : ReferenceError: "rabbit2015" is not defined in <eval> at line number 1 
+0

Какая ошибка возникает у вас? –

+0

sry, посмотрите на редактирование plz :) –

+0

@Antoine Как вы подключили базу данных к 'engine'? – Biffen

ответ

0
result = engine.eval("\"rabbit\"+year"); 

, как вы имели его, Java оценивала "кролик" + год, переходя затем, что к методу Eval.

Предполагая, что «год» является переменной Java, вам также нужно положить его на ScriptEngine связывания ...

Bindings bindings = engine.createBindings(); 
    bindings.put("year", year); 

Затем вы проходите привязки в качестве второго параметра при вызове Eval () ...

result = engine.eval("\"rabbit\"+year", bindings); 
+0

Это то же самое, но спасибо за помощь :) –

+0

Я понял ... Проверьте пересмотренный ответ –

+0

Спасибо, теперь это говорит мне, что: ReferenceError: «год» не определен в на линии номер 1 –

0

я найти ответ на мой вопрос:
PS: Когда я говорю вам о rabits, это были примеры, вот это «aRealiserEn» +
год Я думаю, что я не достаточно хорошо объяснил мой вопрос em (promiss, я буду лучше делать дальше). Я благодарю всех тех людей, которые нашли время, чтобы прочитать меня и ответить мне (особенно Phil Anderson и Biffen).

solutions's code

Смежные вопросы