昨天在写一个web工程的时候发现我有main方法执行就能得到结果,而用servlet去执行就有问题,说找不到类什么的。
public class SearchImp implements Search {
private final static String URL =
"jdbc:sqlserver://localhost\\mssqlserver;DatabaseName=class";
static{
try{
Class.forName("com.microsoft.sqlserver.jdbc.DriverJDBCVersion");
}catch(ClassNotFoundException cfe){
System.out.println("error: 找不到" + cfe.getMessage());
}
}
public List<CourseBean> search(String xueyuan, String jiaoshi) {
List<CourseBean> beans = new ArrayList<CourseBean>();
CourseBean bean = null;
Connection connection = null;
PreparedStatement ps = null;
String sql = "select * from schedule where 教师所属学院 = ? " ;
if(jiaoshi != null && !jiaoshi.equals("")){
sql += "and 教师姓名 = ?";
}
ResultSet rs = null;
try{
connection = DriverManager.getConnection(URL, "sa", "123456");
}catch(SQLException e){
System.out.println("error: " + e.getMessage());
throw new RuntimeException(e);
}
try{
ps = connection.prepareStatement(sql);
ps.setString(1, xueyuan);
if(jiaoshi != null && !jiaoshi.equals("")){
ps.setString(1, jiaoshi);
}
}catch(SQLException e){
System.out.println("error: " + e.getMessage());
}
try{
rs = ps.executeQuery();
while(rs.next()){
bean = new CourseBean();
bean.setJiaoshi(rs.getString("上课教室"));
bean.setJieci(rs.getString("节次"));
bean.setLaoshi(rs.getString("教师姓名"));
bean.setName(rs.getString("课程名称"));
bean.setRenshu(rs.getString("上课人数"));
bean.setSingleDoubleWeek(rs.getString("单双周"));
bean.setXingqiji(rs.getString("星期几"));
bean.setXueyuan(rs.getString("教师所属学院"));
beans.add(bean);
}
}catch(SQLException e){
System.out.println("error: " + e.getMessage());
}finally{
try{
connection.close();
}catch(SQLException e){
System.out.println(e);
}
}
return beans;
}
public static void main(String args[]){
for(CourseBean bean : new SearchImp().search("信息学院", null)){
System.out.println(bean.getJiaoshi() + " : " + bean.getLaoshi());
}
}
}
搞得我是欲哭无泪啊!!!
后来发现它的驱动类是SQLServerDriver,将驱动类的名字一改就好了,可是DriverJDBCVersion本地也能用啊,那微软是脑袋被驴踢了吗,弄两个驱动类,一个还不能在web下用?这里不做讨论,还是用我mysql好……