JAVA操作数据库-->从一张表中取值,经过判断,然后插入另一张表中。

简介:

JAVA操作数据库-->从一张表中取值,经过判断,然后插入另一张表中。

 SQL语句如下:两张表 weather 和 weather_process.

id均为自动增长。Oracle中采用序列 Sequence

写的不对的地方,欢迎大家指出。您的建议,也是我的进步。谢谢!

DROP SEQUENCE weather_id; 
CREATE SEQUENCE weather_id //创建序列
    INCREMENT BY 1 //每次增加1
     START WITH 1 //从1开始,即id从1开始 每次增1 如:1,2,3...
     NOMAXVALUE       //不设置最大值
    NOCYCLE;               //不用循环

插入值的时候,id 字段写成weather_id.nextval 便完成了自动增加的功能!
INSERT INTO WEATHER(id, weather) values (weather_id.nextval,'晴');

 
  1. DROP TABLE WEATHER;  
  2. CREATE TABLE WEATHER (  
  3. ID INT PRIMARY KEY NOT NULL,  
  4. weather VARCHAR(20) NOT NULL 
  5. );  
  6. DROP WEATHER_PROCESS;  
  7. CREATE TABLE WEATHER_PROCESS(  
  8. ID INT PRIMARY KEY NOT NULL,  
  9. 阴 int NOT NULL default 0,  
  10. 晴 int NOT NULL default 0,  
  11. 雨 int NOT NULL default 0  
  12. );  
  13. DROP SEQUENCE weather_id;  
  14. CREATE SEQUENCE weather_id  
  15.     INCREMENT BY 1  
  16.      START WITH 1  
  17.      NOMAXVALUE         
  18.     NOCYCLE;  
  19.       
  20. DROP SEQUENCE weather_process_id ;       
  21. CREATE SEQUENCE weather_process_id  
  22.     MINVALUE 1  
  23.     START WITH 1  
  24.     INCREMENT BY 1;  
  25.       
  26.  
  27. INSERT INTO WEATHER(id, weather) values (weather_id.nextval,'晴');  
  28. INSERT INTO weather(id, weather) values (weather_id.nextval,'雨');  
  29. INSERT INTO weather(id, weather) values (weather_id.nextval,'阴');  
  30. INSERT INTO weather(id, weather) values (weather_id.nextval,'雨');  
  31. INSERT INTO weather(id, weather) values (weather_id.nextval,'阴');  
  32. INSERT INTO weather(id, weather) values (weather_id.nextval,'晴');  
  33. INSERT INTO weather(id, weather) values (weather_id.nextval,'雨');  
  34. INSERT INTO weather(id, weather) values (weather_id.nextval,'晴'); 

下面来说说这次的主题:根据weather 表中的weather字段 的值(晴,阴,雨),来决定表weather_process 中 阴 晴 雨 的值。

当weather 为 晴时,weather_process 中的值 设置为:0 1 0 (阴,晴,雨)。

当weather 为 阴时,weather_process 中的值 设置为:1 0 0 (阴,晴,雨)。

当weather 为 雨时,weather_process 中的值 设置为:0 0 1 (阴,晴,雨)。

上述采用JAVA 实现。

连接ORACLE 的代码:

 
  1. import java.sql.Connection;  
  2. import java.sql.DriverManager;  
  3. import java.sql.SQLException;  
  4.  
  5.  
  6. /**  
  7.  * A JDBC test application for Oracle  
  8.  *   
  9.  * @author Wang  
  10.  * @version 1.0.0  
  11.  * @since JDK1.6  
  12.  */ 
  13. public class OracleConnect {  
  14.     // 定义ORACLE的数据库驱动程序  
  15.     public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;  
  16.     // 定义ORACLE数据库的连接地址  
  17.     public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:ORCL" ;  
  18.     //ORACLE数据库的连接用户名  
  19.     public static final String DBUSER = "system" ;  
  20.     // ORACLE数据库的连接密码  
  21.     public static final String DBPASS = "www.google.com" ;  
  22.     public Connection getConnection() {  
  23.         Connection conn = null ;        // 数据库连接  
  24.         try {  
  25.             Class.forName(DBDRIVER) ;  
  26.         } catch (ClassNotFoundException e) {  
  27.             // TODO Auto-generated catch block  
  28.             e.printStackTrace();  
  29.         }   // 加载驱动程序  
  30.         System.out.println("加载驱动成功!");  
  31.         try {  
  32.             conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;  
  33.         } catch (SQLException e) {  
  34.             // TODO Auto-generated catch block  
  35.             e.printStackTrace();  
  36.         }  
  37.         System.out.println("连接成功!");  
  38.         return conn;  
  39.     }  
  40.       
  41. }  
  42.  

处理表的代码:

 

 
  1. import java.sql.Connection;  
  2. import java.sql.ResultSet;  
  3. import java.sql.SQLException;  
  4. import java.sql.Statement;  
  5.  
  6. public class OracleProcess {  
  7.     Connection conn = null;  
  8.     Statement stmt = null;  
  9.       
  10.     public  OracleProcess(){  
  11.         OracleConnect oraconn = new OracleConnect();  
  12.         conn = oraconn.getConnection();   
  13.     }  
  14.     public Connection getWeather() {  
  15.         try {  
  16.             stmt = conn.createStatement();  
  17.         } catch (SQLException e) {  
  18.             // TODO Auto-generated catch block  
  19.             e.printStackTrace();  
  20.         }  
  21.         String sql = "SELECT weather FROM WEATHER";  
  22.         //String sql1 = "CREATE TABLE WEATHER_PROCESS(ID INT PRIMARY KEY NOT NULL,阴 int NOT NULL ,晴 int NOT NULL,雨 int NOT NULL)";  
  23.         ResultSet result = null;  
  24.         try {  
  25.             stmt.executeUpdate(sql);  
  26.             result = stmt.executeQuery(sql);  
  27.         } catch (SQLException e) {  
  28.             // TODO Auto-generated catch block  
  29.             e.printStackTrace();  
  30.         }  
  31.         try {  
  32.             int flag = 0;  
  33.             while (result.next()) {  
  34.                 //System.out.print(result.getString("weather")+"、");  
  35.                 String str = result.getString("weather");  //获取表中weather的值
  36.                   
  37.                 if ("阴".equals(str)) {  
  38.                     stmt = conn.createStatement();  
  39. /*
          *如果不重新stmt一个 则出现的是表中只会插入一条记录,
          *然后整个循环就退出了。
          */
  40.                     String sql2 = "INSERT INTO WEATHER_PROCESS(id, 晴,阴,雨) values (weather_process_id.nextval,0,1,0)";  
  41.                     stmt.executeUpdate(sql2);  
  42.                     System.out.print(str+"、");  
  43.                 }else if ("晴".equals(str)) {  
  44.                     stmt = conn.createStatement();  
  45.                     String sql2 = "INSERT INTO WEATHER_PROCESS(id, 晴,阴,雨) values (weather_process_id.nextval,1,0,0)";  
  46.                     stmt.executeUpdate(sql2);  
  47.                       
  48.                     System.out.print(str+"、");  
  49.                 }else {  
  50.                     stmt = conn.createStatement();  
  51.                     String sql2 = "INSERT INTO WEATHER_PROCESS(id, 晴,阴,雨) values (weather_process_id.nextval,0,0,1)";  
  52.                     stmt.executeUpdate(sql2);  
  53.                     System.out.print(str+"、");  
  54.                 }     
  55.                 flag ++;  
  56.             }  
  57.             System.out.println("\n此次一共更新了"+flag+"条语句");  
  58.               
  59.         } catch (SQLException e) {  
  60.             // TODO Auto-generated catch block  
  61.             e.printStackTrace();  
  62.         }  
  63.         try {  
  64.             result.close();  
  65.             stmt.close();  
  66.             conn.close();  
  67.         } catch (SQLException e) {  
  68.             // TODO Auto-generated catch block  
  69.             e.printStackTrace();  
  70.         }  
  71.         return conn;  
  72.           
  73.     }  
  74.     
  75. }  

欢迎共同交流,写的不对的地方还望大家谅解,呵呵。






 本文转自 w156445045 51CTO博客,原文链接:http://blog.51cto.com/enetq/502734,如需转载请自行联系原作者


相关文章
|
4月前
|
XML Java 数据库连接
性能提升秘籍:如何高效使用Java连接池管理数据库连接
在Java应用中,数据库连接管理至关重要。随着访问量增加,频繁创建和关闭连接会影响性能。为此,Java连接池技术应运而生,如HikariCP。本文通过代码示例介绍如何引入HikariCP依赖、配置连接池参数及使用连接池高效管理数据库连接,提升系统性能。
99 5
|
3天前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
43 17
|
1月前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
97 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
1月前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
101 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
1月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
99 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
2月前
|
SQL Java 关系型数据库
使用 JDBC 实现 Java 数据库操作
JDBC(Java Database Connectivity)是 Java 提供的数据库访问技术,允许通过 SQL 语句与数据库交互。本文详细介绍了 JDBC 的使用方法,包括环境准备、编程步骤和完整示例。
184 7
|
2月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
157 6
|
2月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
90 2
|
4月前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
447 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
4月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
94 3