Java中写插入语句向数据库中的表插入??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中写插入语句向数据库中的表插入??相关的知识,希望对你有一定的参考价值。

数据库中建的表是
create table RenYuanXinXi
(zhigonghao char(20) UNIQUE,
name char(20),
sex char(20),
job char(20),
time char(20),
salary char(20));

java中写的插入语句是
String sql = "insert into RenYuanXinXi values('"+t+"','"+s1+"','"+s2+"','"+s3+"','"+s4+"','"+t1+"')";

错误是
java.sql.SQLException: null, message from server: "Duplicate entry '' for key 'zhigonghao'"

实现思路:首先oracle数据库中的插入数据可以用insert语句,之后即可通过java方式进行插入,如:
String userinfo="insert into userinfo VALUES("+"'"+userD+"',sysdate"+")";
//之后执行插库操作。
备注,实际在数据库中插入语句如下
sql:insert into userinfo values('123',sysdate);
参考技术A insert into RenYuanXinXi values('"+t+"','"+s1+"','"+s2+"','"+s3+"','"+s4+"','"+t1+"');
不对!
插入:insert into 表名 (字段名1,字段名2) values(value1,value2);追问

全部插入不需要字段名吧。

参考技术B 你看看数据里面zhigonghao是不是有重复的追问

追答

你发的异常信息就是有重复.....

参考技术C 楼主你怎么了,都说了unique了,你难道不知道unique是什么意思么?追问

我知道啊 难道我不设 zhigonghao 为unique啊。

追答

'' 这个不是啊,空串啊,难道机器会故意抱你错啊,真是蠢猪一枚

追问

你牛逼 也傻逼。

如何使用 PACKAGE 向 APEX 中的表插入值?

【中文标题】如何使用 PACKAGE 向 APEX 中的表插入值?【英文标题】:How to insert values to a table in APEX, using a PACKAGE? 【发布时间】:2022-01-11 21:27:25 【问题描述】:

现在我正在使用插入或更新值向表中插入值,如下所示:

IF     :P903_PYMT_MTH_ID IS NOT NULL

THEN
INSERT INTO "TABLE_NAME" (
                                    PYMT_MTH_ID,
                                    PYMT_MTH_TYPE,
                                    PYMT_MTH_NM,
                                    CRT_DT_TM,
                                    MOD_DT_TM,
                                    USR_NM,
                                    LAST_TXN_DT            
                                      )                                      
VALUES     (
                :P903_PYMT_MTH_ID,
                :P903_PYMT_MTH_TYPE,
                :P903_PYMT_MTH_NM,
                sysdate,
                sysdate,    
                :P903_USR_NM,
                :P903_LAST_TXN_DT
           );
           
           COMMIT;

但现在,在办公室,他们需要使用最近创建的包来完成:

    PROCEDURE P_NEW(PN_PYMT_MTH_ID        NUMBER,
                 PV_PYMT_MTH_TP        VARCHAR2,
                 PV_PYMT_MTH_NM        VARCHAR2,
                 PV_USR_NM             VARCHAR2,
                 PN_RESULTADO          OUT NUMBER) AS
    VN_EXISTE NUMBER := 0;
 BEGIN

   PN_RESULTADO := 0;

   SELECT COUNT(1) INTO VN_EXISTE
      FROM "TABLE_NAME"
     WHERE PYMT_MTH_ID = PN_PYMT_MTH_ID;

如何将原始 apex 页面中的每个输入与包链接?我必须说这是我第一次使用包,所以我在那个领域是全新的。提前致谢。

【问题讨论】:

请注意,通过将代码移动到包中,您将获得许多好处,包括:性能、可维护性、测试、潜在的重用。 【参考方案1】:

要在 apex 中的表单上使用包,只需将您手动插入的表单中的代码替换为调用包和过程即可。将下面的“MYPKG”替换为实际的包名。

DECLARE
  l_out_arg NUMBER;
BEGIN
  MYPKG.P_NEW(PN_PYMT_MTH_ID => :P903_PYMT_MTH_ID,
                 PV_PYMT_MTH_TP => :P903_PYMT_MTH_TYPE,
                 PV_PYMT_MTH_NM => :P903_PYMT_MTH_NM,
                 PV_USR_NM => :P903_USR_NM,
                 PN_RESULTADO => l_out_arg);
END;

变量l_out_arg 可以替换为页面项,以便您可以在流程的成功消息中或在此页面流程之后执行的另一个组件(其他流程、分支)中使用它。

附带说明,因为可以在表上生成 APEX 5.1 包automatically。可能值得一看。生成的包中显示的一项非常有用的技术是使用 MD5 散列进行丢失更新检测。这是使用包编写应用程序时很容易错过的功能。

【讨论】:

非常感谢,它是这样工作的,但是当我单击创建时,该行已创建,但它在表中变为空白,就像我插入 NULL 值一样。 Screenshot 我解决了,我在 APEX 中的序列有点错误,非常感谢您的帮助。祝你有美好的一天! 很高兴听到它成功了 :)

以上是关于Java中写插入语句向数据库中的表插入??的主要内容,如果未能解决你的问题,请参考以下文章

向数据库插入的数据不重复,如何用Java做验证

怎么在MYSQL数据库的表中插入一个double型数据?

向mysql中批量插入数据的性能分析

java向oracle数据库中存一个date类型的值

如何加快 CockroachDB 中的插入性能

从java程序中向oracle中插入数据,为啥插入顺序总是不对