我如何修改它以便它使用元数据打印表?
public String formatStudentList() throws SQLException
{
String result = String.format("%-15s %-25s %-25s", "Student ID", "Student Name", "Degree
Scheme\n" + String.format("%-15s %-25s %-25s\n", "**********", "" +
"********************", "****************************"));
int count = 0;
try
{
conn = SimpleDataSource.getConnection();
prepStat = conn.prepareStatement("SELECT * FROM student");
ResultSet print = prepStat.executeQuery();
while (print.next())
{
String id = print.getString("studentId");
String name = print.getString("studentName");
String degree = print.getString("degreeScheme");
result += String.format("%-15s %-25s %-25s\n", id, name, degree);
count++;
}
if (result == null)
{
result = "No Students Were Found In Database\n";
}
else
{
result += "\nTotal Number Of Student = " + count;
}
} catch (SQLException ex)
{
result = "Error Occurred: " + ex.getMessage();
} finally
{
conn.close();
}
return result;
}
它完美地完成了我想做的事情,但是使用元数据有一种方法可以自动完成表格间距和标题。任何人都可以帮我改变这个吗?
答案 0 :(得分:0)
从SimpleDataSource.getConnection()
,您可以致电getMetaData()
获取DatabaseMetaData getMetaData()
。
然后您可以拨打getColumns
请参阅javadocs
答案 1 :(得分:0)
MetaData不是包含用于打印或显示目的的间距格式的报表。
根据ResultSetMetaData文档:
可用于获取有关
ResultSet
对象中列的类型和属性的信息的对象。
很明显,它没有关于如何用于显示或打印的具体信息。
你的解决方案结合成result
字符串进行演示并不好
封装从ResultSet读取的数据以形成数据对象始终是一个好习惯。在您的情况下,它可以是StudentDegreeScheme
对象。
使用必要的getter和setter创建一个类,并通过读取ResultSet填充它们并将student...
对象返回给调用者。
然后,调用者应在使用(例如)任何HTML布局进行格式化后使用相同的对象进行显示或打印。
希望你明白这一点。