Use o banco de dados para escrever a estação expressa (este artigo escreve apenas o código da ideia)
Com o desenvolvimento contínuo da indústria de entrega expressa, há cada vez mais estações eletrônicas expressas. Vamos escrever um miniaplicativo de estação eletrônica expressa simples. Este artigo apresenta como usar o conhecimento de banco de dados para escrever estações eletrônicas expressas.
## O produto acabado é o seguinte:
1. Como o IDEA se conecta ao banco de dados
O primeiro método: adicionar informações de conexão diretamente ao corpo do método.
Vantagens: Se você usar apenas uma operação de banco de dados, você pode escolher.
Desvantagens: várias operações de banco de dados precisam ser gravadas a cada vez, o que é problemático
public void select() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.定义sql
String sql = "select * from kuaidi";
//3.获取conn
conn = DriverManager.getConnection("jdbc:mysql:///kuaidi", "root", "123");
//4.获取执行sql对象Statement
stmt = conn.createStatement();
//5.执行sql
rs = stmt.executeQuery(sql);
//6处理结果
while (rs.next()) {
int danhao = rs.getInt(1);
int qujianma = rs.getInt(2);
String gongsi = rs.getString("gongsi");
String guizi = rs.getString(4);
System.out.println("单号为:" + danhao + " " + "取件码为:" + qujianma + " " + "公司是:" + gongsi + " " + "柜子在第" + guizi + "个");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
Método 2:
Crie um JDBCHelper e um Propriedades para armazenar a conta do banco de dados e a senha para ajudar a carregar rapidamente o driver e liberar a memória.
Vantagens: só precisa escrever uma vez, chamá-lo quando usado.
Desvantagens: escrever muito de cada vez
Ao liberar memória, dois ou três parâmetros podem ser passados e precisam ser liberados, então use a forma sobrecarregada para resolver
private static String url;
private static String user;
private static String password;
private static String driver;
/**
* 文件的读取,只需要读取一次即可
*/
static {
//读取资源文件,并获取值
try {
//1.创建properties集合类
Properties pro = new Properties();
//2.加载文件
//获取src路径下的文件的方式--->ClassLoader类加载器
ClassLoader classLoader = JDBCHelper.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties");
String path = res.getPath();
//pro.load(new FileReader("src/jdbc.properties"));
pro.load(new FileReader(path));
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取连接
*
* @return连接对象
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
/**
* 释放资源
*
* @param stmt
* @param conn
*/
public static void close(Statement stmt, Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
//释放内存
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (stmt != null) {
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
Em segundo lugar, a realização do código do método
1. Courier aumenta entrega expressa
código mostrado abaixo:
public class Add {
Connection conn = null;
Statement stmt = null;
Random r= new Random();
public void addq(int danhao,String gongsi){
try {
conn = JDBCHelper.getConnection();
int qujianma = r.nextInt((999999)+1);
String guizi = Integer.toString(r.nextInt(100)+1);
String sql = "insert into kuaidi values(" + danhao + "," + qujianma+",'"+gongsi+"','"+guizi+"')";
stmt = conn.createStatement();
int a = stmt.executeUpdate(sql);
System.out.println("取件码为:"+qujianma);
if(a>0){
System.out.println("添加成功");
}
else {
System.out.println("添加失败");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
2. O correio exclui o correio
código mostrado abaixo:
public class Delete {
Connection conn = null;
Statement stmt = null;
public void delete(int danhao) {
try {
conn = JDBCHelper.getConnection();
String sql = "delete from kuaidi where danhao = "+danhao;
stmt = conn.createStatement();
int a = stmt.executeUpdate(sql);
if(a>0){
System.out.println("删除成功");
}
else {
System.out.println("删除失败");
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
finally {
JDBCHelper.close(stmt,conn);
}
}
Código de conteúdo principal:
public class Imp { public static void main (String [] args) { kuaidi (); }
public static void kuaidi() {
System.out.println("====欢迎使用新职课快递柜====");
Scanner sc = new Scanner(System.in);
Random r = new Random();
while (true) {
System.out.println("请输入你的身份:1-快递员,2-用户");
try {
int a = sc.nextInt();
if (a < 1 || a > 2) {
System.out.println("输入有误,请重新输入");
} else if (a == 1) {
System.out.println("====欢迎使用新职课快递柜====");
System.out.println("请选择操作:1-存快递 2-删除快递 3-修改快递信息 4-查看所有快递");
int b = sc.nextInt();
switch (b) {
case 1: {
System.out.println("====欢迎使用新职课快递柜====");
System.out.println("请输入快递单号:");
int danhao = sc.nextInt();
System.out.println("请输入公司名称:");
String gongsi = sc.next();
Add add = new Add();
add.addq(danhao, gongsi);
break;
}
case 2: {
System.out.println("====欢迎使用新职课快递柜====");
System.out.print("请输入要删除的订单号:");
int dingdan = sc.nextInt();
Delete delete = new Delete();
delete.delete(dingdan);
break;
}
case 3: {
System.out.println("====欢迎使用新职课快递柜====");
System.out.print("请输入要修改的订单号:");
int danhao = sc.nextInt();
Alter al = new Alter();
boolean q = al.select(danhao);
if (q = true) {
System.out.println("请输入更改后的单号");
int afdanhao = sc.nextInt();
al.alter(afdanhao, danhao);
} else {
System.out.println("请核实订单号");
}
break;
}
case 4: {
System.out.println("====欢迎使用新职课快递柜====");
SelectAll s = new SelectAll();
s.select();
}
}
} else if (a == 2) {
System.out.println("====欢迎使用新职课快递柜====");
System.out.println("请输入取件码");
int qujianma = sc.nextInt();
Take t = new Take();
t.take(qujianma);
}
} catch (InputMismatchException e) {
System.out.println();
System.out.println("请输入数字序号!!!!!!!!");
System.out.println();
kuaidi();
}
}
}
}
Vários outros blocos de código são semelhantes, só precisa modificar a instrução sql
Se você precisar de todo o código ou se tiver dúvidas, pode me enviar uma mensagem privada