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. }  

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