作者coolkevin (胃痛真黏我 Orz)
看板Database
标题[SQL ] 火车时刻表查询
时间Sun Dec 24 04:10:01 2006
我的资料库名称是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)