201521145042《Java程序设计》第14周学习总结

java

MySql操作视频与数据库相关jar文件请参考QQ群文件。

本次作业参考文件

数据库PPT

0. 本周课程设计发布

Java课程设计

1. 本周学习总结

1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容。

2. 书面作业

  • 1. MySQL数据库基本操作

    建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)

    在自己建立的数据库上执行常见SQL语句(截图)

    -参考:实验任务书-题目1

    建立数据库和表:

    插入信息:

    显示全部信息:

  • 2. 使用JDBC连接数据库与Statement

    2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)

    连接test数据库:

            //201521123042

    Connection con = null;

    Statement stmt = null;

    ResultSet rs = null;

    String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false";

    String userName = "root";

    String password = "123456";

    String driverName = "com.mysql.jdbc.Driver";

    Class.forName(driverName);

    con = DriverManager.getConnection(url, userName, password);

    插入学生信息:

    String strSql = "insert into students(stuno,name,age,birthdate,major) values('2015050', '小红', 20,'1997-11-06','cs')";

    stmt = con.createStatement();

    resultNum = stmt.executeUpdate(strSql);

    System.out.println(resultNum + "条记录已经插入");

删除学生信息:

strSql = "delete from students where id='2'";// 删除id=2的数据

resultNum = stmt.executeUpdate(strSql);

System.out.println(resultNum + "条记录删除完毕");

更改学生信息:

strSql = "update students set major='中文' where id='1'";

resultNum = stmt.executeUpdate(strSql);

System.out.println(resultNum + "条记录更新完毕");

选择性的输出学生信息:

strSql = "select stuno,name,birthdate,major from students";

rs = stmt.executeQuery(strSql);

System.out.println("学号\t\t姓名\t出生日期\t\t专业");

while (rs.next()) {

System.out.print(rs.getString("stuno") + "\t\t");

System.out.print(rs.getString(2) + " \t");

System.out.print(rs.getDate("birthdate") + "\t");

System.out.print(rs.getString(4) + "\t\n");

}

######2.2 使用JDBC操作数据库主要包含哪几个步骤?

>1.注册驱动

>2.创建连接

>3.通过连接创建语句

>4.通过语句获得结果集

>5.处理结果集

>6.释放资源

**-参考:实验任务书-题目2**

  • 3. PreparedStatement与参数化查询

    3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)

    查询ID=16的学生信息

                    //201521123042

    strSql = "select * from students where Id = ?";

    pStatement = con.prepareStatement(strSql);

    pStatement.setInt(1, 16);

    rs = pStatement.executeQuery();

查询ID小于5的所有学生信息

strSql = "select * from students where Id < ?";

pStatement = con.prepareStatement(strSql);

pStatement.setInt(1, 5);

rs = pStatement.executeQuery();

######3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。(使用方法executeBatch)

//201521123042

long start=System.currentTimeMillis();

for(int i=0;i<1000;i++){

pStatement.setInt(1, i);

pStatement.setString(2, "周迅");

pStatement.setInt(3, 18);

pStatement.setString(4, hmFromat.format(new Date()));

pStatement.setString(5, "电气工程");

pStatement.addBatch();

}

pStatement.executeBatch();

long finish=System.currentTimeMillis();

System.out.println("用时" +(finish-start));

**参考:实验任务书-题目3**

  • 4. JDBCUtil与DAO

    4.1 粘贴一段你认为比较有价值的代码,出现学号

    增加学生信息:

    //201521123042

    public int add(Student stu) {

    Connection conn = null;

    PreparedStatement pst = null;

    String sql= "insert into students(id,name) values(?,?)";

    int result=-1;

    try{

    conn = JDBCUtil.getConnection();

    pst=conn.prepareStatement(sql);

    pst.setInt(1,stu.getId());

    pst.setString(2, stu.getName());

    result=pst.executeUpdate();

    }catch (SQLException sqle) {

    sqle.printStackTrace();

    }catch(Exception e){

    e.printStackTrace();

    }finally{

    JDBCUtil.realeaseAll(null,pst, conn);

    }

    return result>0?1:-1;

    }

    删除学生信息:

    public  int delete(int sid) {

    Connection conn = null;

    PreparedStatement pst = null;

    int result=-1;

    String strSql = "delete from students where id = ?";

    try {

    conn = JDBCUtil.getConnection();

    pst = conn.prepareStatement(strSql);

    //连接数据库

    pst.setInt(1, sid);

    result = pst.executeUpdate();

    //显式释放资源

    pst.close();

    }catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }finally{

    JDBCUtil.realeaseAll(null, pst, conn);

    }

    return result>0?1:-1;

    }

    更新学生信息:

    public int update(Student stu) {

    Connection conn = null;

    PreparedStatement pst = null;

    String strSql = "update students set name = ? where Id = ?";

    int result=-1;

    try{

    conn = JDBCUtil.getConnection();

    pst = conn.prepareStatement(strSql);

    pst.setInt(2, stu.getId());

    pst.setString(1, stu.getName());

    result= pst.executeUpdate();

    }catch (SQLException sqle) {

    sqle.printStackTrace();

    }catch(Exception e){

    e.printStackTrace();

    }finally{

    JDBCUtil.realeaseAll(null,pst, conn);

    }

    return result>0?1:-1;

    }

    显示所有学生信息,以及按条件查询:

    public List<Student> findAll() {

    Connection conn = null;

    Statement stat = null;

    ResultSet rs = null;

    Student stu=null;

    List<Student> students=new ArrayList<Student>();

    String sql = "select * from student";//表中有id和name这列

    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;

    }

    public Student findById(int id) {

    ResultSet rs = null;

    Connection conn = null;

    Student stu = new Student();

    PreparedStatement pst = null;

    String strSql = "select * from students where Id = ?";

    try{

    conn = JDBCUtil.getConnection();

    pst=conn.prepareStatement(strSql);

    pst.setInt(1, id);

    rs = pst.executeQuery();

    while(rs.next()){

    stu = new Student( rs.getInt("id"), rs.getString("name"));

    }

    }catch (SQLException sqle) {

    sqle.printStackTrace();

    }catch(Exception e){

    e.printStackTrace();

    }finally{

    JDBCUtil.realeaseAll(rs,pst, conn);

    }

    return stu;

    }

    public List<Student> findByName(String name){

    Connection conn = null;

    PreparedStatement pstat = null;

    ResultSet rs = null;

    String sql = "select * from student where name like ?";//表中有id和name这列

    Student student = null;

    List<Student> students=new ArrayList<Student>();

    try {

    conn = JDBCUtil.getConnection();

    pstat = conn.prepareStatement(sql);

    pstat.setString(1, name);

    rs = pstat.executeQuery();

    while(rs.next()){

    int stuId = rs.getInt("id");

    String stuName = rs.getString("name");

    student = new Student(stuId, stuName);

    students.add(student);

    }

    }catch (SQLException sqle) {

    sqle.printStackTrace();

    }catch(Exception e){

    e.printStackTrace();

    }finally{

    JDBCUtil.realeaseAll(rs,pstat, conn);

    }

    return students;

    }

    编写一个函数将List中的所有Student取出,放入Map中,其中key为学生的姓名,value为相应的学生对象。

    public Map<String,Student>showAllinMap(List<Student> students){

    Map<String,Student> map=new HashMap<String,Student>();

    for(Student e:students){

    System.out.println(e.toString());

    map.put(e.getName(), e);

    }

    return map;

    }

    4.2 使用DAO模式访问数据库有什么好处?

    DAO使程序层次分明,把对数据库的操作都放在这一层,这样其他层的逻辑控制就变得清晰明了了。

    对于实现业务逻辑而言,DAO层是基石。

    而且分层后DAO的代码维护与变更等也变得清晰可理解。
    参考:实验任务书-题目5

  • 5. 使用数据库改造购物车系统

    5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。

    先在数据库里存放几本书的信息:

    查询所需书籍:

    	 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    Connection conn = null;

    Statement stat = null;

    ResultSet rs = null;

    PreparedStatement pstat = null;

    String sql = "select * from student where name like ?";//表中有id和name这列

    try {

    conn = JDBCUtil.getConnection();

    pstat = conn.prepareStatement(sql);

    pstat.setString(1, name);

    rs = pstat.executeQuery();

    while(rs.next()){

    jLabel6.setText(""+rs.getString("name"));

    jLabel7.setText(""+rs.getDouble("price"));

    jLabel8.setText(""+rs.getInt("num"));

    }

    }catch (SQLException sqle) {

    sqle.printStackTrace();

    }catch(Exception e){

    e.printStackTrace();

    }finally{

    JDBCUtil.realeaseAll(rs,pstat, conn);

    }

    }

加入购物车:

//201521123042

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

Connection conn = null;

PreparedStatement pstat = null;

int result;

String sql = "insert into ShoppingCart(name,price,num) values(?,?,?) ";//表中有id和name这列

try {

conn = JDBCUtil.getConnection();

pstat = conn.prepareStatement(sql);

pstat.setString(1, jLabel6.getText());

pstat.setDouble(1, Double.parseDouble(jLabel7.getText()));

pstat.setInt(1, Integer.parseInt(jLabel8.getText()));

result = pstat.executeUpdate();

}catch (SQLException sqle) {

sqle.printStackTrace();

}catch(Exception e){

e.printStackTrace();

}finally{

JDBCUtil.realeaseAll(null,pstat, conn);

}

![](http://images2015.cnblogs.com/blog/1109769/201705/1109769-20170528175627688-88088867.png)

######5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?

>①数据库效率高。利用数据库存储访问修改数据比较方便.所有关系型数据库都可以用sql(结构化查询语言)操作数据库;数据库在数据写入读取上做了优化,文本的没有,数据少时执行速度可能看不出区别,但是一旦数据成千上万,那么效率就很明显了。

>②在非数据库系统中,每个应用程序都有自己的专用文件,浪费存储空间。利用数据库可以解决这个问题.

3. 码云

3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

4.课外阅读

JDBC(TM) Database Access

代码结构中Dao,Service,Controller,Util,Model是什么意思,为什么划分

mysq数据库管理工具navicat基本使用方法

以上是 201521145042《Java程序设计》第14周学习总结 的全部内容, 来源链接: utcz.com/z/394006.html

回到顶部