自由编程打卡,请老师检查!
来源:4-4 自由编程
Mycheol
2020-08-26 14:44:07
package com.imooc.jdbc.goodsapp; import com.imooc.jdbc.common.DbUtils; import com.imooc.jdbc.hrapp.command.Command; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Scanner; public class InsertCommand implements Command { @Override public void excute() throws SQLException, ClassNotFoundException { Scanner in = new Scanner(System.in); System.out.print("请输入商品名称:"); String name = in.next(); System.out.print("请输入商品价格:"); float price = in.nextFloat(); System.out.print("请输入商品描述:"); String desp = in.next(); Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = DbUtils.getConnection(); String sql = "INSERT INTO goods (name,price,desp) VALUE (?,?,?)"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, name); pstmt.setFloat(2, price); pstmt.setString(3, desp); int cnt = pstmt.executeUpdate(); if (cnt == 1) { System.out.println("商品信息添加成功:"); System.out.println(name + " " + price + " " + desp); } else { System.out.println("商品信息添加失败!"); } } catch (SQLException throwables) { throwables.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { DbUtils.closeConnection(null, pstmt, conn); } } public static void main(String[] args) throws SQLException, ClassNotFoundException { Command cmd = new InsertCommand(); cmd.excute(); } }
修改价格和删除数据比较简单,就不贴出代码了!这里贴的是添加数据(耳机)的代码,我想问一下老师,题目里面写的是如果成功,就输出所有数据,我只能写一条输出新增的数据,如果输出全部数据(包括自增字段id)呢?我尝试了用结果集接收pstmt.excuteQuery()方法的返回值,但是貌似运行不太成功,能不能指点一下?另外我怎么输入才能验证数据录入失败的情况,我在控制台直接回车也不能打一条错误数据或者null值写入数据表
2回答
同学你好,1. 同学是想知道如何输出全部数据吗?如果是,则同学需要定义查询语句,进行查询,然后修改输出数据。如下所示:
2. 同学可以对输入数据做一下异常处理,当发生此异常时,则输出提示。如下所示:
@Override public void excute() throws SQLException, ClassNotFoundException { Scanner in = new Scanner(System.in); System.out.print("请输入商品名称:"); String name = in.next(); System.out.print("请输入商品价格:"); float price = 0; try { price = in.nextFloat(); } catch (java.util.InputMismatchException e) { System.out.println("数据错误,默认添加0"); in.next(); } System.out.print("请输入商品描述:"); String desp = in.next(); Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = DbUtils.getConnection(); String sql = "INSERT INTO goods (name,price,desp) VALUE (?,?,?)"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, name); pstmt.setFloat(2, price); pstmt.setString(3, desp); int cnt = pstmt.executeUpdate(); if (cnt == 1) { System.out.println("商品信息添加成功:"); String sql2="SELECT * FROM goods"; rs=pstmt.executeQuery(sql2); while (rs.next()) { System.out.println(rs.getInt("id")+rs.getString("name") +rs.getFloat("price")+rs.getString("desp")); } } else { System.out.println("商品信息添加失败!"); } } catch (SQLException throwables) { throwables.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { DbUtils.closeConnection(null, pstmt, conn); } }
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕小尤
2020-08-26
同学你好,如果同学想当输入错误时,就结束添加。则同学可以在catch中添加return,跳出次方法。如下所示:
System.out.print("请输入商品价格:"); float price = 0; try { price = in.nextFloat(); } catch (java.util.InputMismatchException e) { System.out.println("数据错误,默认添加0"); in.next(); return; }
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题