以数据库test下数据表student(sno,sname,ssex,sage,sdept)为例:
student表中的已有的所有记录:
Java代码对表test.student的操作:
创建student类,包含String sno,String sname,String ssex,int sage,String sdept:
1 package jdbcTest; 2 3 public class Student { 4 private String sno,sname,ssex,sdept; //学号,姓名,性别,部门 5 private int sage; //年龄 6 7 public Student(){} 8 9 public Student(String sno,String sname,String sex,String dept,int age){ 10 this.sno = sno; 11 this.sname = sname; 12 this.ssex = sex; 13 this.sdept=dept; 14 this.sage = age; 15 } 16 17 public void setSno(String sno){ 18 this.sno = sno; 19 } 20 21 public String getSno(){ 22 return this.sno; 23 } 24 25 public void setSname(String sname){ 26 this.sname = sname; 27 } 28 29 public String getSname(){ 30 return this.sname; 31 } 32 33 public void setSsex(String sex){ 34 this.ssex = sex; 35 } 36 37 public String getSsex(){ 38 return this.ssex; 39 } 40 41 public void setSdept(String dept){ 42 this.sdept = dept; 43 } 44 45 public String getSdept(){ 46 return this.sdept; 47 } 48 49 public void setSage(int age){ 50 this.sage = age; 51 } 52 53 public int getSage(){ 54 return this.sage; 55 } 56 57 public String toString(){ 58 return this.sno+" "+this.sname+" "+this.ssex+" "+this.sage+" "+this.sdept; 59 } 60 }
创建StudentDA类,用于数据库连接、操作数据库:
1 package jdbcTest; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.sql.Statement; 9 import java.util.ArrayList; 10 import java.util.List; 11 12 public class StudentDA { 13 String driverName = "com.mysql.jdbc.Driver"; // 加载JDBC驱动 14 String dbURL = "jdbc:mysql://localhost:3306/test"; // 连接服务器和数据库sample 15 String userName = "test"; // 数据库用户名 16 String userPwd = "test"; // 数据库密码 17 static Connection dbConn = null; //连接信息 18 Statement statement; //sql语句 19 PreparedStatement pstatement; 20 ResultSet rs; //结果集 21 22 //数据库连接 23 public Connection dBConnection(){ 24 try { 25 Class.forName(driverName); 26 dbConn = DriverManager.getConnection(dbURL, userName, userPwd); 27 System.out.println("Connection Succeed!"); 28 } catch (Exception e) { 29 System.out.println("Connection failed!"); 30 e.printStackTrace(); 31 } 32 return dbConn; 33 } 34 35 //查询记录,将查询结果放在list中 36 public List<Student> selectAllStudent(){ 37 List<Student> studentList = new ArrayList<Student>(); //存放查询结果 38 String sql = "select * from student"; 39 40 try{ 41 statement = dbConn.createStatement(); 42 rs = statement.executeQuery(sql); //执行sql语句并返回结果集 43 while (rs.next()) { 44 Student student = new Student(); 45 student.setSno(rs.getString("sno")); 46 student.setSname(rs.getString("sname")); 47 student.setSsex(rs.getString("ssex")); 48 student.setSdept(rs.getString("sdept")); 49 student.setSage(rs.getInt("sage")); 50 studentList.add(student); //将查询出的student信息放入studentList链表中 51 } 52 }catch(Exception e){ 53 e.printStackTrace(); 54 } 55 /* finally{ 56 try { 57 statement.close(); 58 dbConn.close(); 59 } catch (SQLException e) { 60 // TODO Auto-generated catch block 61 e.printStackTrace(); 62 } 63 }*/ 64 return studentList; 65 } 66 67 //插入一个学生记录,如果插入成功,返回true 68 public boolean insertStudent(Student stu){ 69 int i = 0; 70 String sqlInset = "insert into test.student(sno,sname,ssex,sage,sdept)" + 71 " values(?, ?, ?, ?,?)"; //插入语句 72 73 try { 74 pstatement = dbConn.prepareStatement(sqlInset); 75 pstatement.setString(1, stu.getSno()); //设置SQL语句第一个“?”的值 76 pstatement.setString(2,stu.getSname()); 77 pstatement.setString(3,stu.getSsex()); 78 pstatement.setInt(4, stu.getSage()); 79 pstatement.setString(5,stu.getSdept()); 80 i = pstatement.executeUpdate(); //执行插入数据操作,返回影响的行数 81 if(i == 1){ //如果插入数据成功,则影响的行数为1 82 return true; 83 } 84 } catch (SQLException e) { 85 // TODO Auto-generated catch block 86 e.printStackTrace(); 87 } 88 return false; 89 } 90 91 //根据sno删除记录 92 public boolean deleteStudent(String sno){ 93 int i = 0; 94 String sqlDelete = "delete from test.student where sno = " + sno; 95 96 try { 97 pstatement = dbConn.prepareStatement(sqlDelete); 98 i = pstatement.executeUpdate(); //执行删除数据操作,返回影响的行数 99 if(i == 1){ //如果删除数据成功,则影响的行数为1 100 return true; 101 } 102 } catch (SQLException e) { 103 // TODO Auto-generated catch block 104 e.printStackTrace(); 105 } 106 return false; 107 } 108 109 //删除所有的记录 110 public void deleteAll(){ 111 String sqlDeleteAll = "delete from student"; 112 try { 113 pstatement = dbConn.prepareStatement(sqlDeleteAll); 114 } catch (SQLException e) { 115 // TODO Auto-generated catch block 116 e.printStackTrace(); 117 } 118 } 119 120 //根据学号sno,更新学生年龄sage 121 public boolean updateStudent(String sno,int age){ 122 int i =0; 123 String sqlUpdate = "update test.student set sage=? where sno=?"; 124 try { 125 pstatement = dbConn.prepareStatement(sqlUpdate); 126 pstatement.setInt(1,age); //设置SQL语句第一个"?"的参数值 127 pstatement.setString(2, sno); 128 i = pstatement.executeUpdate(); //执行修改操作,返回影响的行数 129 if(i == 1){ //修改成功返回true 130 return true; 131 } 132 } catch (SQLException e) { 133 // TODO Auto-generated catch block 134 e.printStackTrace(); 135 } 136 return false; 137 } 138 139 //测试增删改查 140 public static void main(String args[]){ 141 StudentDA stuDA = new StudentDA(); 142 dbConn = stuDA.dBConnection(); 143 //测试查询 144 System.out.println("测试----查询所有记录 "); 145 List<Student> stuList = stuDA.selectAllStudent(); 146 for(Student stu:stuList){ 147 System.out.println(stu.toString()); 148 } 149 150 /* //测试插入 151 System.out.println("测试----插入一条记录 "); 152 Student stu = new Student("200215334","test2","男","CS",25); 153 if(stuDA.insertStudent(stu)){ 154 System.out.println("插入成功"); 155 }else{ 156 System.out.println("插入失败"); 157 } 158 159 //测试根据sno删除记录 160 if(stuDA.deleteStudent("200215334")){ 161 System.out.println("删除成功"); 162 }else{ 163 System.out.println("删除失败"); 164 } 165 166 //测试更新 167 if(stuDA.updateStudent("200215333", 33)){ 168 System.out.println("更新成功"); 169 }else{ 170 System.out.println("更新失败"); 171 }*/ 172 } 173 }