通过java程序将挪威字母插入SQLite数据库

时间:2014-10-31 17:31:29

标签: java database sqlite encoding

我正在尝试用我的java程序中的数据填充SQLite数据库。

使用Apache POI从excel文件中读取数据。我可以使用常规方法将数据插入数据库。 但是,当我使用shell手动检查数据库时,所有挪威字符æ,ø,å都无法正确显示。每当我通过shell手动填写数据库时,它们都会按原样显示。 此外,在包含这些字符的控制台中打印出java字符串时,它们会正确显示。

执行此类操作时必须出现此问题:

String sql = "insert into db(name) values (æøå)";
stmt.executeUpdate(sql);

我试过了

byte[] b = sql.getBytes("utf-8");
sql = new String(b, "utf-8");

无济于事。

知道如何纠正这种情况吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

有一个非常简单的解决方案:让Java和SQLite驱动程序为您做一切。你不必关心编码和逃避参数。

如何做到这一点:使用PreparedStatement:

String name = "æøå"
PreparedStatement prepStmt = conn.prepareStatement("insert into db(name) values (?)");
prepStmt.setString(1, name);
prepStmt.executeUpdate();

此外,此代码片段可抵御SQL注入攻击。

BTW:你发布的第二个代码片段完全无用,它什么也没做。将String转换为byte []并返回String不会改变String的单个位。