在开发软件期间,我需要执行一个存储为string
的语句。比如说:
String test = " int a; ";
在上面的例子中,我想声明一个变量a
。
另一个例子是从string
:
String sqlquery ="SELECT * FROM FULLDETAILS WHERE Classname = 'test' ";
con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/executable","root","mysql");
st = (Statement) con.createStatement();
rs = st.executeQuery(sqlquery);
^
我也想为Java语句实现这一点。有办法吗?
编辑:
上面给出的是一个例子,真实情况有很大不同(但我基本上需要的是相同的)。
情况是,我有一些jpanels
,我想添加一些组件,比如说label
,标签的内容是从数据库中获取的,而且它只是在运行时我可以知道,我应该向哪个面板添加组件。在这种情况下,我无法通过名称指定panel
,比如我有10 jpanels
,我想我可以使用如下字符串:
String test = " jpanel " + i + " .add(jlabel1); " ;
将导致test的值为:
jpanel1.add(jlabel1); // provided i is a string with value of i is 1
现在我想执行此操作。有办法吗?
答案 0 :(得分:8)
也许这不是你想要的,但是你可以小心地使用Java的Reflection API来调用基于(例如)字符串的方法或其他东西。
SQL语句差别很大,因为它们并不是由Java内部实际执行,而是由JDBC连接另一端的一些额外SQL Server处理。
击><击> 撞击>
在某个地方,您应该拥有所有面板的初始列表,或者在启动时创建它,或者如果我是对的那样创建它? 您应该去找一个数据结构来保存它们(例如HashMap似乎合适),添加所有面板并使用一个键来取回它们并根据需要添加标签。
粗略的例子:
Map<Integer, Panel> panelMap = ...
for(int i = 1; i < 10; i++) {
Panel panel = new Panel();
panelMap.put(i, panel);
}
panelMap.get(1).addLabel(labelForPanel1); (for all labels)
当程序执行时,变量名或多或少无关紧要,然后它们都是对象。希望能满足您的需求......或者现在我完全错过了:)。
答案 1 :(得分:3)