JDBC 练习

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

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();
    }

}

时间: 2024-10-11 07:07:44

JDBC 练习的相关文章

jdbc的简单使用

1.加载驱动(mysql的驱动是com.mysql.jdbc.Driver,SqlServer的驱动是 com.microsoft.sqlserver.jdbc.SQLServerDriver) 2.加载数据库的连接(url, username,password) 3.编写sql语句(String sql="select * from grade  where gradeName = ?";) 4.遍历查询结果 [while (resultSet.next()) {   System.

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABLE 2 ( 3 gid NUMBER not null, 4 gname VARCHAR2(90), 5 gdetails CLOB, 6 gpicture VARCHAR2(100), 7 gprice NUMBER, 8 gleixing NUMBER, 9 gpinpai VARCHAR2(20) 10 ) 11 tablespace

jdbc驱动jar导入eclipse

在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是 打开eclipse 1.右击要导入jar包的项目,点properties 2.左边选择java build path,右边选择libraries 3.选择add External jars 4.选择jar包的按照路径下的确定后就行了. Java连接MySQL的最新驱动包下载地址 http://www.mysql.com/downloads/connector/j 有两种方法导入jar包,第一种

JDBC

Java语言访问数据库的一种规范,是一套API JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库.比如建立数据库连接.执行SQL语句进行数据的存取操作. JDBC规范采用接口和实现分离的思想设计了Java数据库编程的框架.接口包含在java.sql及javax.sql包中,其中java.sql属于JavaSE,javax.sql属于JavaE

java链接MySQL数据库时使用com.mysql.jdbc.Connection的包会出红线问题

package com.swift; //这里导入的包是java.sql.Connection而不是com.mysql.jdbc.Connection import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class TestJDBC { public static void main(String[] args) { try { Class.forName(

Tomcat JDBC Pool使用说明

Maven依赖 <dependency>   <groupId>org.apache.tomcat</groupId>   <artifactId>tomcat-jdbc</artifactId>   <version>8.5.9</version> </dependency> 最新版本为9.0,推荐使用8.5.9稳定版 常用配置 连接池配置项很多,下面只列出了推荐配置,项目组可根据自身情况进行增减 <b

tomcat启动过程报the JDBC Driver has been forcibly unregistered问题的修复过程

最近两天在整理关于flume的总结文档,没有启动过tomcat.昨天晚上部署启动,发现报了如题的错误,全文如下: 严重: The web application [/oa-deploy] registered the JBDC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a mem

使用JDBC如何提高访问数据库的性能?

1. 使用数据连接池(Connection Pool), 避免使用DriverManager.getConnection. 2. 合理的配置数据连接池参数,设置数据连接池的初始大小,最大连接数,连接超时时间等. 3. 选择合适的事务等级,按照不同的数据库操作类型选择不同的事务等级. 4. 及时关闭Connection,不关闭的话会严重影响系统的性能,甚至造成系统罢工. 5. 优化Statement 1) 选择合适的Statement, 根据不同的数据库操作选择Statement, Prepare

回滚的意义---JDBC事务回滚探究

JDBC手动事务提交回滚的常见写法一直是rollback写在commit的catch之后: try{ conn.setAutoCommit(false); ps.executeUpdate(); ps.executeUpdate(); conn.commit(); }catch(Exception e){ conn.rollback(); } 但是,这种回滚是没有意义的: 一旦commit前出错, 就不提交了, 回滚无用 一旦commit了, 说明没错, 不用回滚 找到一篇和我观点相同的文章:

Hive JDBC——深入浅出学Hive

第一部分:搭建Hive JDBC开发环境 搭建:Steps ?新建工程hiveTest ?导入Hive依赖的包 ?Hive  命令行启动Thrift服务 ?hive --service hiveserver & 第二部分:基本操作对象的介绍 Connection ?说明:与Hive连接的Connection对象 ?Hive 的连接 ?jdbc:hive://IP:10000/default" ?获取Connection的方法 ?DriverManager.getConnection(&q