[SQL ] 火車時刻表查詢

看板Database (資料庫)作者 (胃痛真黏我 Orz)時間18年前 (2006/12/24 04:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
我的資料庫名稱是db1 是用access db1裡面有四個資料表 分別是 station(站名) timetable(時間) trainTypeNumber(車次) weeknumber車種 station 裡面有兩個欄位 一個是ID 代表著地名的數字 一個是地名 timetable 有三個欄位 一個是ID 代表著地名的數字 一個是trainnumber 代表著車次 一個是時間 火車開車時間 trainTypeNumber 有三個欄位 一個是 trainnumber 代表著車次 一個是traintype 代表車種 一個是weekID 代表星期幾的數字 weeknumber 有兩個欄位 一個是weekID 代表星期幾的數字 一個是week 記錄著這裡面車次有開的星期幾 我想要輸入日期 起站地點 到站地點 車種 開車時間 輸出 車次 車種 起站地點 起站時間 到站地點 到站時間 出來的結果只有 table ---------------------------- 台北 49 15.58 莒光 日 台北 59 16.50 莒光 日 台北 63 22.55 莒光 日 台北 65 23.58 莒光 日 disconnect 不知道是哪裡語法錯誤 少找到很多個車次 而且也不知道該如何去設定到站地點的判斷 這是我的程式 http://134.208.2.224:82/train1.java 我的資料庫 http://134.208.2.224:82/db.mdb 我是使用ODBC連結 import java.io.*; import java.net.*; import java.sql.*; import java.util.*; public class train1{ static final String[] yu={"日","一","二","三","四","五","六"}; static String weekcount(int temp){ //算出星期幾 int n=temp; int t1,d1,t2,t3; Calendar cal=Calendar.getInstance(); int y=cal.get(Calendar.YEAR); int m=cal.get(Calendar.MONTH)+1; int d=cal.get(Calendar.DATE); int w=cal.get(Calendar.DAY_OF_WEEK)-1; if (d>n){ t1=d-n; d1=t1 % 7; t3=w-d1; }else{ t1=n-d; t2=w+t1; t3=t2%7; } return yu[t3]; } public static void main(String[] args){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:test"; String user = "cis"; String password = "cis"; Connection conn=DriverManager.getConnection(url,user,password); /* INPUT 日期 起站站名 到站站名 車種 車次時間 OUTPUT 車次 車種 起站站名 起站時間 到站站名 到站時間 query error=> and trainTypeNumber.weekID=weeknumber.weekID?? */ String date="1231"; String begin="台北"; String end="花蓮"; String type="莒光"; String time="15.49"; String t1,t2; String w1,w3; int w2,t3,t4; w1=date.substring(2); w2=Integer.parseInt(w1); w3=weekcount(w2); //w3是星期幾 t1=time.substring(0,2); t2=time.substring(3,5); t3=Integer.parseInt(t1); t4=Integer.parseInt(t2); //t3=hour t4=minute Statement stmt=conn.createStatement(); String query="SELECT station.stop,timetable.trainnumber, timetable.time,trainTypeNumber.traintype, weeknumber.week FROM station,timetable,trainTypeNumber,weeknumber WHERE station.ID=timetable.ID and timetable.trainnumber=trainTypeNumber.trainnumber and trainTypeNumber.weekID=weeknumber.weekID"; ResultSet rs=stmt.executeQuery(query); System.out.println("table"); System.out.println("----------------------------"); while(rs.next()){ String address=rs.getString("stop"); String tn=rs.getString("trainnumber"); String t=rs.getString("time"); String ta=t.substring(0,2); String tb=t.substring(3,5); int tc=Integer.parseInt(ta); int td=Integer.parseInt(tb); String tt=rs.getString("traintype"); String we=rs.getString("week"); if(begin.equals(address)){ if(type.equals(tt)){ if(we.indexOf(w3)!=-1){ if(tc>=t3 & td>=t4){ System.out.print(address+" "); System.out.print(tn+" "); System.out.print(t+" "); System.out.print(tt+" "); System.out.println(w3+" "); } } } } } rs.close(); conn.close(); System.out.println("disconnect"); } catch(Exception e) { System.out.println("發生了"+e+"例外"); //e.printStackTrace(); } } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.44.155 ※ 編輯: coolkevin 來自: 134.208.44.155 (12/24 04:10)
文章代碼(AID): #15ZOp7Pq (Database)
文章代碼(AID): #15ZOp7Pq (Database)