用Java动态创建print语句

用Java动态创建print语句,java,database,Java,Database,我查询了一个数据库,得到了很多应该呈现给用户的信息。在数据库中,我有字段a、b、c、d和e。现在,用户应该能够指示哪些字段应该打印在屏幕上(即,用户可以选择仅查看从数据库检索的数据的子集) 我如何动态创建一个print语句,有时打印两个字段,有时打印四个字段,有时打印三个字段等等,这取决于用户需要什么?如果所有的艰苦工作都已经完成,您只需要打印一个结果集,那么它可以像连续调用System.out.print()一样简单,然后用\n结束该行。它可以嵌套在FOR循环中,因此如果您有一个int,其中包

我查询了一个数据库,得到了很多应该呈现给用户的信息。在数据库中,我有字段a、b、c、d和e。现在,用户应该能够指示哪些字段应该打印在屏幕上(即,用户可以选择仅查看从数据库检索的数据的子集)


我如何动态创建一个print语句,有时打印两个字段,有时打印四个字段,有时打印三个字段等等,这取决于用户需要什么?

如果所有的艰苦工作都已经完成,您只需要打印一个结果集,那么它可以像连续调用
System.out.print()一样简单
,然后用
\n
结束该行。它可以嵌套在FOR循环中,因此如果您有一个
int
,其中包含要打印的字段数,只需迭代它们

在更复杂的情况下,如果您有一个完整的列表,其中一些字段被选中,而其他字段未被选中,那么您可以使用(稍微)粗糙的方法,如下所示:

...

String[] chosenFields = {"Field 1", "Field 2" /*, (et cetera) */};

for (int i = 0; i < numberOfFields; i++)
{
    for (int j = 0; j < chosenFields.length; j++)
    {
        if (fieldsName[i].equals(chosenFields[j]))
            System.out.print(fields[i] + " ");

        break;
    }
}

System.out.println();

...

希望这能有所帮助。持续连接到
查询
会根据用户选择的字段形成有效的SQL语句。希望对其进行一些修改,以便只打印某些字段,将对您有所帮助。打印
查询的
System.out.println()
调用大约向下三分之二是一个很好的工作场所。

打开或关闭可选值的自然方式是单选按钮。用于5个字段,即5个单选按钮的数组

StringBuffer sb = new StringBuffer (5 * 10);
for (int i = 0; i < 5; ++i)
    if (rb[i])
        s.append (field[i]).append (" ");
StringBuffer sb=新的StringBuffer(5*10);
对于(int i=0;i<5;++i)
if(rb[i])
s、 追加(字段[i])。追加(“”);
也许您最好只从数据库中选择感兴趣的列?然后,虚拟列很有用:

sql = new StringBuffer ("SELECT 1 "); // the dummy-column
for (int i = 0; i < 5; ++i)
    if (rb[i])
        sql.append (", ").append (fieldname[i]);
sql=newstringbuffer(“选择1”);//虚拟柱
对于(int i=0;i<5;++i)
if(rb[i])
sql.append(“,”).append(字段名[i]);

我不是java爱好者,但我想你把问题复杂化了!你是说把这些打印到屏幕上吗?正如塔伦所说,我认为你把这件事复杂化了。是的,我说的是在屏幕上打印。数据库中的每个字段都应该有一列。但是用户应该能够“过滤”数据并说他只对某些列感兴趣。然后只打印那些。顺便说一句,我假设当你想创建一个可变长度的打印语句时,你的意思是将可变数量的数据打印到一行?谢谢!我要试一试!
sql = new StringBuffer ("SELECT 1 "); // the dummy-column
for (int i = 0; i < 5; ++i)
    if (rb[i])
        sql.append (", ").append (fieldname[i]);