public synchronized int makeAppointment(String did,int day,int ap){
int res=0;
conn=DBConnection.getConnection();
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String[] days={"SunA","SunP","MonA","MonP","TueA","TueP","WedA","WedP","ThuA","ThuP","FriA","FriP","SatA","SatP"};
int index=0,curpc=0; try{
if(day < 0 || day > 6 || ap < 0 || ap > 1)
throw new NumberFormatException();
index=day * 2 + ap;
stmt=conn.createStatement();
strSQL=
"SELECT * FROM currappointment WHERE DID='" +
did + "'";
rs=stmt.executeQuery(strSQL);
if(!rs.next() || (curpc=rs.getInt(days[index])) == 0)
System.out.print(ap);


strSQL="SELECT Doctor FROM pinqueue WHERE Doctor='" + did + "' AND Patient=" + this.PID + " AND Day=" + day +
" AND AP=" + ap;
rs=stmt.executeQuery(strSQL);
if(rs.next())
throw new IllegalArgumentException();

conn.setAutoCommit(false);
System.out.print("asdfasdf");
stmt=conn.createStatement();
strSQL="INSERT INTO pinqueue (Patient,Doctor,Day,AP,Date) VALUES (" + this.PID + ",'" + did + "'," + day + "," +
ap + ",'" + dateFormat.format(new java.util.Date()) + "')";
//System.out.print(dateFormat.format(new java.util.Date()));
stmt.addBatch(strSQL);
strSQL="UPDATE currappointment SET " + days[index] + "=" + (curpc - 1) + " WHERE DID='" + did + "'";
stmt.addBatch(strSQL);
stmt.executeBatch();
conn.commit();
res=1;
}
catch(NumberFormatException nfe){
res= -3;
}
catch(SQLException sqle){
conn.rollback();
System.out.print(sqle);
res= -1;
//Debug.log(Debug.getExceptionMsg(sqle));
}
catch(IllegalArgumentException iae){
System.out.print(iae);
res= -2;
}
catch(Exception e){
//Debug.log(Debug.getExceptionMsg(e));
res=0;
}
finally{
return res;
}
}com.microsoft.jdbc.base.BaseBatchUpdateException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。