Java escribe en la tabla de Oracle, actualización en tiempo real de datos simulados (caso adjunto)

Caso: Java inserta datos falsos en tiempo real para realizar la actualización incremental simulada de la tabla de hechos del pedido

Paso 1: Cree una tabla de hechos de pedidos en la base de datos de Oracle

--创建订单事实表
create table test.test_order (
    o_id varchar(20) primary key,
    dt timestamp,
    u_id number,
    p_id varchar(20),
    quantity number,
    pay_id varchar(20)
);
comment on table test.test_order is '订单事实表';
comment on column test.test_order.o_id is '订单ID';
comment on column test.test_order.dt is '订单创建时间';
comment on column test.test_order.u_id is '用户ID';
comment on column test.test_order.p_id is '产品ID';
comment on column test.test_order.quantity is '购买数量';
comment on column test.test_order.pay_id is '支付方式';

Paso 2: escribir código Java y ejecutar

package java_to_oracle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;


public class JavaToOracle {
    //静态变量存储最大值
    private static final AtomicInteger atomicNum = new AtomicInteger();
    //构造方法
    public static void main(String[] args) {
        String url = "jdbc:oracle:thin:@192.168.xxx.x:1521:填你oralce数据库的实例名称";
        String username = "???";
        String password = "???";
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection(url, username, password);
            Statement st = con.createStatement();
            String sql_0 = "truncate table test.TEST_ORDER";
            st.execute(sql_0);
            System.out.println(getCurrentTime() +" 清空表成功:   " + sql_0);
            //插入 100000 条消息,大概持续3天
            for (int i = 0; i < 100000; i++) {
                //线程安全的原子操作,所以此方法无需同步
                int newNum = atomicNum.incrementAndGet();
                //生成:订单ID
                SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//订单ID的年月日
                String newStrNum = String.format("%06d", newNum);//订单ID的尾部编号,数字长度为5位,长度不够数字前面补0
                String orderID = "JD" + df.format(new Date()) + newStrNum;
                //定义sql语句
                String sql_1 = "insert into test.test_order values " + "(" + "'" + orderID + "'" + "," + "SYSTIMESTAMP" + "," + getUserID() + "," + "'" + getProductID() + "'" + "," + getPurchaseQuantity() + "," + "'" + getPaymentMode() + "'" + ")";
                //执行sql
                st.execute(sql_1);
                //打印提示
                System.out.println(getCurrentTime() + " 插入第 " + newStrNum + " 条数据:   " + sql_1);
                //随机睡眠
                Thread.sleep(getSleepTime());
            }
            System.out.println("insert success!");
        }
        catch (Exception e) {
            System.out.println("insert failed! " + e);
        }
    }

    //----------------------------------------------------------
    //生成:订单创建时间
    public static String getCurrentTime() {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return df.format(new Date());
    }

    //生成:用户ID
    public static Integer getUserID() {
        Integer[] uid = {14000001,14000002,14000003,14000004,14000005,14000006,14000007,14000008,14000009,14000010};
        Random random = new Random();
        int i = random.nextInt(uid.length);
        return uid[i];
    }

    //生成:产品ID
    public static String getProductID() {
        String[] pid = {"A3701","A3702","A3703","A3704","A3705","A3706","A3707","A3708","A3709","A3710"};
        Random random = new Random();
        int i = random.nextInt(pid.length);
        return pid[i];
    }

    //生成:购买数量[1,10)取整
    public static Integer getPurchaseQuantity() {
        return (int) (Math.random() * (10-1) + 1);
    }

    //生成:支付ID
    public static String getPaymentMode() {
        String[] paymode = {"A","B","C"};
        Random random = new Random();
        int i = random.nextInt(paymode.length);
        return paymode[i];
    }

    //生成:睡眠时间[100,5000)取整 Math.random()*(max-min)+min
    public static Integer getSleepTime() {
        return (int) (Math.random() * (5000-100) + 100);
    }

}

Paso 3: Ver los datos de la tabla, ¡los datos se insertaron correctamente!

select * from ogg.test_order


Problemas que puede encontrar:

Nota 1: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

Solución: [IDEA informó un error, se resolvió] java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver_z_weiwei's Blog-CSDN Blog

Error 2: java.sql.SQLSyntaxErrorException: ORA-00917: falta una coma

Solución: imprima la cadena sql y verifique si hay algún problema con el empalme de la cadena java

Error 3: java.sql.SQLException: ORA-00911: carácter no válido

Solución: no puede haber un punto y coma al final de la instrucción sql

Supongo que te gusta

Origin blog.csdn.net/qq_17685725/article/details/126376110
Recomendado
Clasificación