创建数据库,将本身的姓名、学号做为一条记录插入。(截图,需出现本身的学号、姓名)
在本身创建的数据库上执行常见SQL语句(截图)
mysql
//201521123117 try { conn = DriverManager.getConnection(URL,userName,password); Statement statement = conn.createStatement(); ResultSet resultSet = statement.executeQuery(sql); while(resultSet.next()){ int id = resultSet.getInt("id"); String stuno = resultSet.getString("stuno"); String name =resultSet.getString("name"); int age =resultSet.getInt("age"); Date date = resultSet.getDate("birthdate"); System.out.print("id="+id+" stuno="+stuno+" name="+name+" age="+age+" birthdate="+date); } } catch (SQLException e) { e.printStackTrace(); }finally{ if(conn!=null) try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } conn = null; }
(1)装载驱动; (2)建立数据库并链接(Connection); (3)经过链接想数据库发送SQL语句(Statement); (4)得到结果集(ResultSet); (5)处理结果; (6)关闭链接,释放资源。
-参考:实验任务书-题目2sql
int row = 0; //根据参数更新数据 String strSql = "update students set name = ? where Id = ?"; pStatement = con.prepareStatement(strSql); pStatement.setString(1, "li"); pStatement.setInt(2, 2); row = pStatement.executeUpdate(); System.out.println("成功更新了"+row+"行数据!"); pStatement.close();//当即释放资源
String strSql = "select * from students where name = ?"; pStatement = con.prepareStatement(strSql); pStatement.setString(1, "李心宇"); rs = pStatement.executeQuery(); System.out.println("id\t学号 \t\t姓名\t年龄\t出生年月日"); while(rs.next()){ //经过列名取数据 System.out.print(rs.getInt("id")+"\t"); System.out.print(rs.getString("stuno")+"\t"); System.out.print(rs.getString("name")+"\t"); System.out.print(rs.getInt("age")+"\t"); System.out.print(rs.getDate("birthdate")); System.out.println(); } pStatement.close();//当即释放资源
普通方法insert():数据库
//201521123117 for(int i=0;i<1000;i++){ String strSql = "insert into students(stuno,name,age,birthdate) values(?,?,?,?)"; pStatement = con.prepareStatement(strSql); pStatement.setString(1, "201521123117"); pStatement.setString(2, "li"); pStatement.setInt(3, 20); pStatement.setString(4, "1997-09-11"); }
executeBatch方法:安全
//201521123117 for(int i=0;i<1000;i++){ String strSql = "insert into students(stuno,name,age,birthdate) values(?,?,?,?)"; pStatement = con.prepareStatement(strSql); pStatement.setString(1, "201521123117"); pStatement.setString(2, "li"); pStatement.setInt(3, 20); pStatement.setString(4, "1997-09-11"); pStatement.addBatch();//添加到同一个批处理中 } pStatement.executeUpdate(); pStatement.close();//当即释放资源
时间对比截图:
ide
参考:实验任务书-题目3学习
//201521123117 @Override public List<Student> findAll() { // TODO Auto-generated method stub Connection conn = null; Statement stat = null; ResultSet rs = null; Student stu=null; List<Student> students=new ArrayList<Student>(); String sql = "select * from student"; try { conn = JDBCUtil.getConnection(); stat = conn.createStatement(); rs = stat.executeQuery(sql); while(rs.next()){ stu=new Student(rs.getInt("id"),rs.getString("name")); students.add(stu); } }catch (SQLException sqle) { sqle.printStackTrace(); }catch(Exception e){ e.printStackTrace(); }finally{ JDBCUtil.realeaseAll(rs,stat, conn); } return students; }
DAO模式的使用至关于创建一个接口,接口中有咱们所须要的方法。在程序中,当须要和数据进行交互的时候则使用这个接口,而且编写一个实现类来实现这个接口上的方法,能够很清晰的知道interface DAO接口的类有什么功能,代码之间的关系清晰。并且以后咱们须要对程序的修改的话,只需对DAO模式中的某个方法修改便可,不须要整个项目都进行修改,修改范围变小,工做量减小。
参考:实验任务书-题目5测试
(1)在数据读取时,使用文件速度比较慢,而使用数据库时读取速度更快,效率更高些; (2)使用数据库时须要设置密码,这就限制了访问数据库的对象,相对于使用文件,安全性更高,内容泄露的可能性低; (3)使用文件时须要打开文件,存放数据再关闭文件,而使用数据库只需输入相应的命令便可实现。