据我所知,在JavaFX中,我们可以通过以下代码强制Label中的新行:
label.setText("Line one \n Line two");
我的问题是:
我想从SQLite数据库中显示一些诗歌。所以我尝试在数据库中使用这样的文本:
Roses are red \n violets are blue
不幸的是,当我运行程序时,它只显示包含\ n的文本,并且不会强制换行。
可以告诉我如何让它发挥作用吗?
答案 0 :(得分:1)
您不应该在数据库行中使用\n
。例如。以下代码无需特殊处理换行符即可运行:
String url = "jdbc:sqlite:poetryDB.db";
try (Connection connection = DriverManager.getConnection(url)) {
try (Statement s = connection.createStatement()) {
s.execute("CREATE TABLE IF NOT EXISTS poem(text TEXT NOT NULL)");
}
// insert poem containing newline
try (PreparedStatement ps = connection.prepareStatement("INSERT INTO poem (text) VALUES (?)")) {
ps.setString(1, "Roses are red \n violets are blue");
ps.executeUpdate();
}
// print content of the db table
try (Statement s = connection.createStatement()) {
ResultSet rs = s.executeQuery("SELECT text FROM POEM");
while (rs.next()) {
System.out.println(rs.getString(1).replace("\\n", "\n"));
System.out.println("----------------");
}
}
}
如果您确实想在db中将换行符存储为\n
,则需要在从db中检索数据后将\n
替换为换行符:
String value = resultSet.getString(index).replace("\\n", "\n");
如果您想要修复数据库,那么您需要做的就是运行一个替换\n
的出现的更新:
try (Statement s = connection.createStatement()) {
s.executeUpdate("UPDATE poem SET text = REPLACE(text, '\\n', '\n')");
}