自由编程打卡,请老师检查!
来源: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;
}如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题