이 내 코드의 일부입니다 내 코드 :[마이크로 소프트] [ODBC 드라이버 관리자] 잘못된 문자열 또는 버퍼 길이 예외
Connection dbcon=null;
Statement stm;
ResultSet rs;
ResultSetMetaData metadata;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (java.lang.ClassNotFoundException e) {
System.out.print("ClassNotFoundException: ");
System.out.println(e.getMessage());
}
try {
dbcon = DriverManager.getConnection("jdbc:odbc:Bus_Info");
stm = dbcon.createStatement();
rs = stm.executeQuery("select distinct number, name, min(Stop_Times.departure_time), max(Stop_Times.departure_time) from Routes, Stop_Times, Stops, trips, Calendar where(stops.stop_name like'ΣΟΝΙΑ' and Stops.stop_id=Stop_Times.stop_id and Stop_Times.trip_id=trips.trip_id and trips.route_id=Routes.route_id and trips.direction='outbound' and sunday=1 and Calendar.service_id=trips.service_id)group by number, name");
metadata = rs.getMetaData();
int columns = metadata.getColumnCount();
System.out.printf("%s\t%s\t%s\t%s", "ΑΡΙΘΜΟΣ ΓΡΑΜΜΗΣ",
"ΟΝΟΜΑ ΓΡΑΜΜΗΣ", "ΧΡΟΝΟΣ ΔΥΙΕΛΕΣΗΣ ΠΡΩΤΟΥ ΔΡΟΜΟΛΟΓΙΟΥ",
"ΧΡΟΝΟΣ ΔΙΕΛΕΥΣΗΣ ΤΕΛΕΥΤΑΙΟΥ ΔΡΟΜΟΛΟΓΙΟΥ");
System.out.println();
while(rs.next()) {
System.out.printf("%s\t%s\t%s\t%s\n", rs.getString("number"), rs.getString("name"),
rs.getString("min(Stop_Times.departure_time)"),
rs.getString("max(Stop_Times.departure_time"));
}
rs.close();
stm.close();
dbcon.close();
} catch (SQLException e) {
System.out.print("SQLException: ");
System.out.println(e.getMessage());
}
여기에 문제는 내가 두 개 이상의 열을 표시 할 때, 내가 얻을 수 있다는 것입니다 이 메시지 :
"[마이크로 소프트] [ODBC 드라이버 관리자] 잘못된 문자열 또는 버퍼 길이 예외"
내가 뭘 잘못? 미리 감사드립니다. !
나는 유니 코드 문자에 대해 다음과 같이'N '표기법을 사용해야한다고 생각합니다.'like N'ΣΟΝΙΑ'' – cha
이 시도했지만이 예외와 관련이 없습니다. – theosot
왜 rs를 사용하고 있습니까? 날짜 열에 getstring? getdate를 사용하지 않으셨습니까? 또는 SQL 문에서 최소 및 최대 날짜를 변환 할 수 있습니다 – cha