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,如需转载请自行联系原作者


相关文章
|
22天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——TestStu.java
hibernate正向生成数据库表以及配置——TestStu.java
16 1
|
22天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.java
hibernate正向生成数据库表以及配置——Teacher.java
11 0
|
22天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Student.java
hibernate正向生成数据库表以及配置——Student.java
10 0
|
26天前
|
SQL 数据库连接 数据库
你不知道ADo.Net中操作数据库的步骤【超详细整理】
你不知道ADo.Net中操作数据库的步骤【超详细整理】
15 0
|
14天前
|
存储 NoSQL Java
Java数据库编程指南:实现高效数据存储与访问
【4月更文挑战第2天】Java开发者必须掌握数据库编程,尤其是JDBC,它是连接数据库的标准接口。使用Spring JDBC或JPA能简化操作。选择合适的JDBC驱动,如MySQL Connector/J,对性能至关重要。最佳实践包括事务管理、防SQL注入、优化索引和数据库设计。NoSQL数据库如MongoDB也日益重要,Java有对应的驱动支持。理解这些概念和技术是构建高效数据库应用的基础。
Java数据库编程指南:实现高效数据存储与访问
|
25天前
|
Java 数据库
java面向对象高级分层实例_数据库操作类
java面向对象高级分层实例_数据库操作类
9 1
|
26天前
|
自然语言处理 Java
这是什么操作?java中的变量竟然可以先使用后声明?
这是什么操作?java中的变量竟然可以先使用后声明?
13 0
|
26天前
|
SQL Java
使用java中的String类操作复杂的字符串
使用java中的String类操作复杂的字符串
9 0
|
26天前
|
SQL Java 关系型数据库
在Python中编写Java数据库驱动是不可能的
在Python中编写Java数据库驱动是不可能的
|
26天前
|
SQL Java 关系型数据库
Java数据库访问
Java数据库访问