通过JDBC访问数据库

使用建立一个Student类,利用数据库来存储多个Student,写完一个方法在main中写一段测试代码,运行以保证目前所做工作的正确性。有以下方法:

  1)add(Student stu):可以向其中增加新的学生,并保存在数据库中

     测试add方法是否正确:用add方法向数据库增加一个新的学生,然后在数据库的图形管理界面中查询,确认是否增加

  2)dispAll():可以显示所有的学生信息

  3)findById(long id):可以按照学号来查找,并显示符合条件的学生信息,查无该人的话显示错误信息

  4)findByName(String name):可以按照姓名查找学生,找到后显示其信息,查无此人显示错误信息

  5)delById(long id):可以按照id删除学生的信息,然后显示找到该人。若查无此人,显示相应的错误信息

  6)sortByXXX:可以按照指定的字段排序,并显示排序后的信息

 

 1 public class Student {  2  3 private long id;  4 private String name;  5 private String major;  6 private String clas;  7 private double mathScore;  8 private double osScore;  9 10 private double javaScore; 11 12 public void setId(long id){ 13 this.id=id; 14  } 15 public void setName(String name){ 16 this.name=name; 17  } 18 public void setMajor(String major) { 19 this.major = major; 20  } 21 public void setClas(String clas) { 22 this.clas = clas; 23  } 24 public void setMathScore(double mathScore) { 25 this.mathScore = mathScore; 26  } 27 public void setOsScore(double osScore) { 28 this.osScore = osScore; 29  } 30 public void setJavaScore(double javaScore){ 31 this.javaScore=javaScore; 32  } 33 public long getId() { 34 return id; 35  } 36 public String getName() { 37 return name; 38  } 39 public String getMajor() { 40 return major; 41  } 42 public String getClas() { 43 return clas; 44  } 45 public double getMathScore() { 46 return mathScore; 47  } 48 public double getOsScore() { 49 return osScore; 50  } 51 public double getJavaScore() { 52 return javaScore; 53  } 54 public String show(){ 55 String str=id+"\t"+name+"\t"+major+"\t"+clas+"\t"+mathScore+"\t"+osScore+"\t"+javaScore; 56 return str; 57  } 58 }
 1 import java.sql.ResultSet;  2 import java.sql.SQLException;  3 import java.sql.Connection;  4 import java.sql.DriverManager;  5 import java.sql.Statement;  6 import java.util.Scanner;  7 import java.sql.PreparedStatement;  8  9 public class StuInfoManage {  10  11 //连接数据库 12 String driver="org.hsqldb.jdbcDriver";  13 String url="jdbc:hsqldb:hsql://localhost/";  14 String user="SA";  15 String pass="";  16 private Connection conn;  17 public StuInfoManage() throws ClassNotFoundException{  18 String sql = "create table if not exists students(id bigint,name varchar(20),";  19 sql+= "major varchar(10),class varchar(10),math double,os double,java double)";  20 try {  21 if(conn!=null) return;//已经初始化 22 Class.forName("org.hsqldb.jdbcDriver");// 动态加载mysql驱动 23 conn = DriverManager.getConnection(url,user,pass);//建立和数据库的连接 24 Statement stmt = conn.createStatement();  25  stmt.executeUpdate(sql);  26  stmt.close();  27 } catch (SQLException e) {  28  e.printStackTrace();  29  }  30  }  31  32  33  34  35  36 public void close() throws SQLException{  37 if(conn!=null) conn.close();  38  }  39  40  41  42  43  44 public void add(Student stu){  45 String sql="insert into students(id,name,major,class,math,os,java)"+"values(?,?,?,?,?,?,?)";  46 try {  47 PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);  48 pstmt.setLong(1, stu.getId());  49 pstmt.setString(2,stu.getName());  50 pstmt.setString(3,stu.getMajor());  51 pstmt.setString(4,stu.getClas());  52 pstmt.setDouble(5,stu.getMathScore());  53 pstmt.setDouble(6,stu.getOsScore());  54 pstmt.setDouble(7,stu.getJavaScore());  55  pstmt.executeUpdate();  56  pstmt.close();  57 } catch (SQLException e) {  58  e.printStackTrace();  59  }  60  }  61  62  63  64  65  66 public void delById(long id) {  67 String sql="delete from students where id="+id;  68 try {  69 Statement stmt=conn.createStatement();  70  stmt.executeUpdate(sql);  71  stmt.close();  72 } catch (SQLException e) {  73  e.printStackTrace();  74  }  75  }  76  77  78  79  80  81 public void findById(long id){  82 String sql="select * from students where id="+id;  83 try {  84 Statement stmt=conn.createStatement();  85 ResultSet rs=stmt.executeQuery(sql);  86  87 while(rs.next()){  88 long id1=rs.getLong("id");  89 String name=rs.getString("name");  90 String major=rs.getString("major");  91 String clas=rs.getString("class");  92 double mathScore=rs.getDouble("math");  93 double osScore=rs.getDouble("os");  94 double javaScore=rs.getDouble("java");  95 Student stu=new Student();  96  stu.setId(id1);stu.setName(name);  97  stu.setMajor(major);stu.setClas(clas);  98  stu.setMathScore(mathScore);stu.setOsScore(osScore);stu.setJavaScore(javaScore);  99 System.out.println("学号\t 姓名 专业 班级:\tmath:\t os:\tjava:"); 100  System.out.println(stu.show()); 101  } 102  rs.close(); 103  stmt.close(); 104 } catch (SQLException e) { 105  e.printStackTrace(); 106  } 107  } 108 109 110 111 112 113 public void findByName(String name){ 114 String sql="select * from students where name=?"; 115 try { 116 PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql); 117 pstmt.setString(1, name); 118 ResultSet rs=pstmt.executeQuery(); 119 while(rs.next()) { 120 long id1=rs.getLong("id"); 121 String name1=rs.getString("name"); 122 String major=rs.getString("major"); 123 String clas=rs.getString("class"); 124 double mathScore=rs.getDouble("math"); 125 double osScore=rs.getDouble("os"); 126 double javaScore=rs.getDouble("java"); 127 Student stu=new Student(); 128  stu.setId(id1);stu.setName(name1); 129  stu.setMajor(major);stu.setClas(clas); 130  stu.setMathScore(mathScore); 131  stu.setOsScore(osScore); 132  stu.setJavaScore(javaScore); 133 System.out.println("学号\t 姓名 专业 班级:\tmath:\t os:\tjava:"); 134  System.out.println(stu.show()); 135  } 136 if(!rs.next()) { 137 System.out.println("error"); 138  } 139  rs.close(); 140  pstmt.close(); 141 } catch (SQLException e) { 142  e.printStackTrace(); 143  } 144  } 145 146 147 148 149 150 151 public void sort(String course){ 152 String sql = "select * from students"; 153 try { 154 Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 155 ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值156 rs.last();//移动到最后一行157 int total=rs.getRow();//得到总行数158 Student[] stus=new Student[total]; 159 int index=0; 160 rs.beforeFirst();//游标指向第一行前161 while (rs.next()) { 162 long id1=rs.getLong("id"); 163 String name1=rs.getString("name"); 164 String major=rs.getString("major"); 165 String clas=rs.getString("class"); 166 double mathScore=rs.getDouble("math"); 167 double osScore=rs.getDouble("os"); 168 double javaScore=rs.getDouble("java"); 169 Student stu=new Student(); 170  stu.setId(id1);stu.setName(name1); 171  stu.setMajor(major);stu.setClas(clas); 172  stu.setMathScore(mathScore);stu.setOsScore(osScore);stu.setJavaScore(javaScore); 173 stus[index]=stu; 174 index++; 175  } 176  courseChoose(stus,course); 177 System.out.println("学号\t 姓名 专业 班级:\tmath:\t os:\tjava:"); 178 for(int m=0;m<stus.length;m++){ 179 System.out.println(stus[m].getId() + "\t" + stus[m].getName()+"\t" + stus[m].getMajor() + "\t" + stus[m].getClas()+"\t" +stus[m].getMathScore()+ "\t" + stus[m].getOsScore()+"\t"+stus[m].getJavaScore());// 入如果返回的是int类型可以用getInt()180  } 181  rs.close(); 182  stmt.close(); 183 } catch (SQLException e) { 184  e.printStackTrace(); 185  } 186  } 187 188 189 190 191 public void courseChoose(Student[] stus,String course){ 192 if(course.equals("math")){ 193 for(int i = 0 ; i <stus.length-1 ; i++){ 194 for(int j = i+1 ; j < stus.length ; j++){ 195 Student stu=new Student(); 196 if(stus[i].getMathScore() <stus[j].getMathScore()){ 197 stu = stus[i]; 198 stus[i] = stus[j]; 199 stus[j] = stu; 200  } 201  } 202  } 203  } 204 else if(course.equals("os")){ 205 for(int i = 0 ; i <stus.length-1 ; i++){ 206 for(int j = i+1 ; j < stus.length ; j++){ 207 Student stu=new Student(); 208 if(stus[i].getOsScore() <stus[j].getOsScore()){ 209 stu = stus[i]; 210 stus[i] = stus[j]; 211 stus[j] = stu; 212  } 213  } 214  } 215 216  } 217 else if(course.equals("java")){ 218 for(int i = 0 ; i <stus.length-1 ; i++){ 219 for(int j = i+1 ; j < stus.length ; j++){ 220 Student stu=new Student(); 221 if(stus[i].getJavaScore()<stus[j].getJavaScore()){ 222 stu = stus[i]; 223 stus[i] = stus[j]; 224 stus[j] = stu; 225  } 226  } 227  } 228  } 229  } 230 231 232 233 234 public void dispAll(){ 235 String sql = "select * from students"; 236 try { 237 Statement stmt = conn.createStatement(); 238 ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值239 System.out.println("学号\t 姓名 专业 班级:\tmath:\t os:\tjava:"); 240 while (rs.next()) { 241  System.out 242 .println(rs.getLong(1) + "\t" + rs.getString(2)+"\t" 243 + rs.getString(3) + "\t" + rs.getString(4)+"\t" + rs.getDouble(5) 244 + "\t" + rs.getDouble(6)+"\t"+rs.getDouble(7));// 如果返回的是int类型可以用getInt()245  } 246  rs.close(); 247  stmt.close(); 248 } catch (SQLException e) { 249  e.printStackTrace(); 250  } 251  } 252 253 254 255 256 public void menu(){ 257  Long id; 258  String name; 259  String major; 260  String clas; 261 double mathScore; 262 double osScore; 263 double javaScore; 264 Scanner scanner=new Scanner(System.in); 265 System.out.println("1.显示学生信息"); 266 System.out.println("2.录入学生信息"); 267 System.out.println("3.学号查找学生"); 268 System.out.println("4.姓名查找学生"); 269 System.out.println("5.删除学生信息"); 270 System.out.println("6.排序"); 271 System.out.println("0.退出"); 272 System.out.print("输入选择(0-6):"); 273 switch(scanner.nextInt()){ 274 case 1: 275  dispAll(); 276  menu(); 277 break; 278 case 2: 279 System.out.print("请输入学号:"); 280 id=scanner.nextLong(); 281 System.out.print("请输入姓名:"); 282 name=scanner.next(); 283 System.out.print("请输入专业:"); 284 major=scanner.next(); 285 System.out.print("请输入班级:"); 286 clas=scanner.next(); 287 System.out.print("请输入mathScore:"); 288 mathScore=scanner.nextDouble(); 289 System.out.print("请输入osScore:"); 290 osScore=scanner.nextDouble(); 291 System.out.print("请输入javaScore:"); 292 javaScore=scanner.nextDouble(); 293 Student stu=new Student(); 294  stu.setId(id);stu.setName(name); 295  stu.setMajor(major);stu.setClas(clas); 296  stu.setMathScore(mathScore);stu.setOsScore(osScore);stu.setJavaScore(javaScore); 297  add(stu); 298 System.out.println("添加学生信息成功!"); 299  menu(); 300 break; 301 case 3: 302 System.out.print("请输入你要查找的学生的学号:"); 303 id=scanner.nextLong(); 304  findById(id); 305  menu(); 306 break; 307 case 4: 308 System.out.print("请输入你要查找的学生的姓名:"); 309 name=scanner.next(); 310  findByName(name); 311  menu(); 312 break; 313 case 5: 314 System.out.print("请输入你要删除的学生的学号:"); 315 id=scanner.nextLong(); 316  delById(id); 317 System.out.println("删除学生信息成功!"); 318  menu(); 319 break; 320 case 6: 321 System.out.println("1 math 2 os 3 java"); 322 System.out.println("*************************************************"); 323 System.out.print("请输入选择(1-3):"); 324 int choice=scanner.nextInt(); 325 if(choice==1){ 326 sort("math"); 327  } 328 else if(choice==2){ 329 sort("os"); 330  } 331 else if(choice==3){ 332 sort("java"); 333  } 334 else{ 335 System.out.println("Input error!"); 336  } 337  menu(); 338 break; 339 case 0: 340  scanner.close(); 341 break; 342 default: 343 System.out.println("Input error!"); 344  menu(); 345  } 346  } 347 348 349 350 351 352 public static void main(String[] args) throws Exception { 353 StuInfoManage stuinfomanage=new StuInfoManage(); 354  stuinfomanage.menu(); 355  stuinfomanage.close(); 356  } 357 }

 

相关文章