[SQL ] 火車時刻表查詢
我的資料庫名稱是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)
Database 近期熱門文章
PTT數位生活區 即時熱門文章