建立两个表,一个水果表一个用户表。

1.要求输入账号和密码,登陆成功显示欢迎界面,失败提示错误

2.显示选择界面,输入不同的数字,显示不同的内容,,并实现不同的功能,并返回界面

import java.awt.image.Raster;
import java.sql.*;
import java.util.*; public class ZuoYe {
public static String zh; public static void main(String [] args) throws Exception {
Scanner sc=new Scanner(System.in);
System.out.println("请输入账号");
zh=sc.nextLine();
System.out.println("请输入密码");
String mm=sc.nextLine(); Class.forName("com.mysql.jdbc.Driver"); String jdbc="jdbc:mysql://127.0.0.1:3306/mydb";
Connection conn=DriverManager.getConnection(jdbc, "root", "");
String sql="select * from login where UserName=? and Password=? ";
PreparedStatement state= conn.prepareStatement(sql);
state.setString(1, zh);
state.setString(2, mm);
ResultSet re=state.executeQuery(); if(re.next()){
System.out.println("登陆成功!"+re.getString(2)+",欢迎你!");
jm();
}
else{
System.out.println("账号或密码输入错误");
} conn.close();
} public static void jm() throws Exception{
Scanner sc=new Scanner(System.in);
System.out.println("************请选择服务项目***************");
System.out.println("1.显示所有商品");
System.out.println("2.添加商品");
System.out.println("3.购买商品");
System.out.println("4.退出");
String xz=sc.nextLine();
if(xz.equals("1")){
xianshi();
jm();
}
else if(xz.equals("2")){
tianjia();
xianshi();
jm();
}
else if(xz.equals("3")){
goumai();
xianshi();
}
else if(xz.equals("4")){
return;
}
else{
System.out.println("输入有误");
}
} public static void xianshi() throws Exception{
Class.forName("com.mysql.jdbc.Driver");
String jdbc="jdbc:mysql://127.0.0.1:3306/mydb";
Connection conn=DriverManager.getConnection(jdbc, "root", "");
String sql="select * from fruit";
PreparedStatement state=conn.prepareStatement(sql);
ResultSet re=state.executeQuery();
System.out.println("*********************************************");
System.out.println("商品编号"+"\t"+"商品名称"+"\t"+"单价"+"\t"+"原产地"+"\t"+"剩余商品数量");
while(re.next()){
System.out.println(re.getString(1)+"\t"+re.getString(2)+"\t"+re.getDouble(3)+"\t"+re.getString(4)+"\t"+re.getInt(5));
}
System.out.println("*********************************************");
conn.close();
} public static void tianjia() throws Exception{
Scanner sc=new Scanner(System.in);
System.out.println("请输入商品属性:商品编号-商品名称-单价-原产地-添加数量,属性之间用-隔开");
String sp=sc.nextLine();
String [] str=sp.split("-");
double qz=Double.parseDouble(str[2]) ;
int sl=Integer.parseInt(str[4]);
Class.forName("com.mysql.jdbc.Driver");
String jdbc="jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK";
Connection conn=DriverManager.getConnection(jdbc, "root", "");
String sql="insert into fruit values(?,?,?,?,?,NULL)";
PreparedStatement state=conn.prepareStatement(sql);
state.setString(1, str[0]);
state.setString(2, str[1]);
state.setDouble(3, qz);
state.setString(4, str[3]);
state.setInt(5, sl);
state.executeUpdate();
System.out.println("添加成功!!!"); conn.close();
} public static void goumai() throws Exception{
Scanner sc=new Scanner(System.in);
System.out.println("请输入购买的水果种类或代号");
String mz=sc.nextLine();
System.out.println("请输入购买数量");
int sl=Integer.parseInt(sc.nextLine()); Class.forName("com.mysql.jdbc.Driver");
String jdbc="jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK";
Connection conn=DriverManager.getConnection(jdbc,"root","");
conn.setAutoCommit(false); //查询苹果单价
String sql2="select * from fruit where Name=? or Ids=?";
PreparedStatement state=conn.prepareStatement(sql2);
state.setString(1, mz);
state.setString(2, mz);
ResultSet re=state.executeQuery();
re.next();
double zj=re.getDouble(3)*sl;//总价格 //修改商品数量
String sl_sql="update fruit set Numbers=? where Name=? or Ids=?";
PreparedStatement state_sl=conn.prepareStatement(sl_sql);
state_sl.setInt(1, (re.getInt(5)-sl));
state_sl.setString(2, mz);
state_sl.setString(3, mz);
state_sl.executeUpdate(); //修改用户剩余钱数
String sy="update login set Account=Account-? where UserName=?";
PreparedStatement dstate=conn.prepareStatement(sy);
dstate.setDouble(1, zj);
dstate.setString(2, zh);
dstate.executeUpdate(); //最后查询剩余钱数
String zhye="select * from login where UserName=?";
PreparedStatement state_ye=conn.prepareStatement(zhye);
state_ye.setString(1, zh);
ResultSet re1 =state_ye.executeQuery();
re1.next();
System.out.println("购买成功!!!您当前账户余额为"+re1.getDouble(4)+"元");
conn.commit();
conn.close();
} }

JDBC 练习的更多相关文章

  1. Java数据库连接技术——JDBC

    大家好,今天我们学习了Java如何连接数据库.之前学过.net语言的数据库操作,感觉就是一通百通,大同小异. JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力. JDBC API ...

  2. 玩转spring boot——结合AngularJs和JDBC

    参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...

  3. [原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?在JDBC编程接口中Statement 有两个方法特别值得注意:通过使用addBatch( ...

  4. JDBC MySQL 多表关联查询查询

    public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...

  5. JDBC增加删除修改

    一.配置程序--让我们程序能找到数据库的驱动jar包 1.把.jar文件复制到项目中去,整合的时候方便. 2.在eclipse项目右击"构建路径"--"配置构建路径&qu ...

  6. JDBC简介

    jdbc连接数据库的四个对象 DriverManager  驱动类   DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 ...

  7. JDBC Tutorials: Commit or Rollback transaction in finally block

    http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...

  8. FineReport如何用JDBC连接阿里云ADS数据库

    在使用FineReport连接阿里云的ADS(AnalyticDB)数据库,很多时候在测试连接时就失败了.此时,该如何连接ADS数据库呢? 我们只需要手动将连接ads数据库需要使用到的jar放置到%F ...

  9. JDBC基础

    今天看了看JDBC(Java DataBase Connectivity)总结一下 关于JDBC 加载JDBC驱动 建立数据库连接 创建一个Statement或者PreparedStatement 获 ...

  10. Spring学习记录(十四)---JDBC基本操作

    先看一些定义: 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1.core即核心包,它包含了JDBC的核心功能.此包内有很多重要的类,包括:JdbcTemplate类.SimpleJ ...

随机推荐

  1. [OC] NSURLSession

    有的程序员老了,还没听过NSURLSession 有的程序员还嫩,没用过NSURLConnection 有的程序员很单纯,他只知道AFN. NSURLConnection在iOS9被宣布弃用,NSUR ...

  2. linux系统oracle-ora12505问题解决方案一

    说明:(1)Linux版本 Linux version 2.6.32.12-0.7-default (geeko@buildhost) (gcc version 4.3.4 [gcc-4_3-bran ...

  3. oracle 误删数据恢复

    1.根据时间点查系统版本号scn: select timestamp_to_scn(to_timestamp('2013-01-07 11:20:00','YYYY-MM-DD HH:MI:SS')) ...

  4. 我对BFC的理解

    最初这篇文章打算回答寒冬大神的第一问,谈谈CSS布局.本来呢我以为布局主要涉及float跟display相关属性,以及他们的包含框.静态位置等等.后来看了大神的一片面试文章,嗯?这里怎么还有个BFC, ...

  5. Linux 系统中发博客必备的五大图片处理神器

    发博客时,总免不了要用图片说话.经过长时间的磨合,在 Linux 桌面系统下有几款图片处理软件我已经用得比较顺手了.这几款软件在 Linux 世界使用广泛,各个 Linux 发行版的软件仓库中都有自带 ...

  6. C++的性能C#的产能?! - .Net Native 系列四:性能测试方法(PerfView)

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  7. C++虚函数和函数指针一起使用

    C++虚函数和函数指针一起使用,写起来有点麻烦. 下面贴出一份示例代码,可作参考.(需要支持C++11编译) #include <stdio.h> #include <list> ...

  8. 如何用 MEF 扩展应用程序

    最近在写一篇关于如何扩展 Visual Studio 编辑器的文章时,用到了 MEF,因此打算写一篇文章提一下这个技术点.本篇文章并不打算详细介绍 MEF,只是一个最简单的入门,相信您在阅读本篇文章后 ...

  9. Entity Framework 6 Recipes 2nd Edition(13-1)译 -> 优化TPT继承模型的查询

    问题 你想提高在一个TPT继承模型里的查询 解决方案 让我们假设有一个简单的TPT继承模型,如图Figure 13-1 Figure 13-1. A simple Table per Type inh ...

  10. C++ std::queue

    std::queue template <class T, class Container = deque<T> > class queue; FIFO queue queue ...