エンコーディングが UTF-8 の postgres 9.2 データベースがあります。このデータベースを更新し、.sql ファイルを読み取ってデータベースで実行するためのアプリケーション (Java で記述) があります。しかし、問題が見つかりました。これらの .sql ファイルの 1 つに、次の指示があります。
insert into usuario(nome)
values('Usuário Padrão');
これを実行した後、テーブルデータに移動すると、挿入されたのは次のとおりです。"Usuário Padrão"
このコマンドをpgAdminから直接実行すると、正しく作成されます。したがって、それがデータベースの問題なのか、スクリプトを実行するプログラムの問題なのかわかりません。
- -編集 - -
JDBC接続を取得する方法は次のとおりです。
public static Connection getConnection() throws SQLException{
Connection connection;
String url="jdbc:postgresql://"+servidor+":"+porta+"/"+nomeBanco;
Properties props = new Properties();
props.put("user", usuario);
props.put("password", senha);
connection=DriverManager.getConnection(url,props);
connection.setAutoCommit(false);
return connection;
}
ファイルを読み取るために使用するコードは次のとおりですが、ファイルから読み取った文字列を出力すると正しい文字列が表示されるため、これは正しいように見えます。
public static String lerArquivo(File arquivo){
StringBuilder conteudo=new StringBuilder();
BufferedReader br = null;
try {
br=new BufferedReader(new FileReader(arquivo));
String linha;
while((linha=br.readLine())!=null){
conteudo.append(linha).append("\n");
}
} catch (IOException e) {
FrameErroBasico f=new FrameErroBasico(null, true);
f.setText("Erro ao ler arquivo.",e);
f.setVisible(true);
}finally{
try{br.close();}catch(Exception e){}
}
return conteudo.toString();
}