Недавно мне досталось задание сделать
програмку, чтобы она получала автоматически курс
доллара ЦБ и складывала его в базу данных.
И вот как я решил эту проблеммку на Яве. Кстати
эта программка в настоящий момент встроена в
сервер, исходный код которого приведён чуть
раньше, и успешно фунциклирует под моим
наблюдением :)
Листинг 1
import java.io.*;
import java.net.*;
import java.util.*;
import java.text.*;
import java.sql.*;
import ConnectManager;
class Terra implements HttpConstants {
static void onRBC() throws IOException {
URL homeRBC = null;
DataInputStream dis = null;
String full = new String();
boolean cont2 = false;
try {
homeRBC = new URL("http://www.rbc.ru/out/801.csv");
dis = new DataInputStream(homeRBC.openStream());
String line = dis.readLine();
while(line != null) {
full += line + "\n";
line = dis.readLine();
}
cont2 = true;
} catch(IOException e) {
System.out.println("Error for connection to RBC ...");
}
if(cont2==true) {
String cbr = toUnicode(full);
int ndx = cbr.indexOf("USD OA ?O,");
full = cbr.substring(ndx);
full = full.substring(0,31);
String cbrDate = full.substring(10);
cbrDate = cbrDate.substring(0,5);
String cbrValue = full.substring(16);
cbrValue = cbrValue.substring(0,7);
System.out.println(cbrDate);
System.out.println(cbrValue);
Connection con = ConnectManager.getConnectionToRBC();
try {
PreparedStatement logSt1 = con.prepareStatement("UPDATE rbc SET cbrValue = ? WHERE Name = 'USD'");
logSt1.setString(1, cbrValue);
int res = logSt1.executeUpdate();
logSt1.close();
PreparedStatement logSt2 = con.prepareStatement("UPDATE rbc SET cbrDate = ? WHERE Name = 'USD'");
logSt2.setString(1, cbrDate);
res = logSt2.executeUpdate();
logSt2.close();
ConnectManager.closeConnection(con);
} catch (SQLException ex) {
System.out.println("Error SQL ...");
}
}
}
public static void main(String[] a) throws Exception {
onRBC();
}
}