求助,java插入oralce自增主键方法

求助,我在java开发中想做一个上传文件的功能,上传之后该文件的信息会被保存在数据库中,由于之前用的是mysql数据库,所以现在save的时候报错ID为null,我在oracle中建了自增序列,但是java中的方法不知道怎么写,如图我想要一个插入自增主键ID的方法,上面那个是我自增的序列,之前用mysqlz这样插入就行了现在oracle不知道咋改了。。本人菜鸟求大神们说详细点,拜谢!图片说明

昨天太晚了,提的问题一直不显示害的我图都没上囧,之前用mysqlz这样插入就行了现在oracle我的setID的地方怎么改呢?

11个回答

先判断你的序列建好了吗,用plsql查下 select 序列名.nextval from dual;查询下序列。如果可以查到,你在添加的时候id对应的?直接放序列名.nextval就可以了,你这里报错很正常,你这就写个那个,java并不知道你是什么类型。需要写成字符串,之后oracle数据在执行这个sql的时候自然会去找这个序列的下一个值,就像调用上面那个sql一样;如果没有查到,先建一个序列。

xionglangs
编程爱好者熊浪 回复yinseye01: 整个sql就是一个字符串
大约 2 年之前 回复
xionglangs
编程爱好者熊浪 回复yinseye01: insert into
大约 2 年之前 回复
xionglangs
编程爱好者熊浪 回复yinseye01: insert 表名 (id) values(序列名.nextval)
大约 2 年之前 回复
yinseye01
yinseye01 回复编程爱好者熊浪: 嗯嗯,序列查的到,我代码里的序列主要不知道放哪里,为了提问才放这的,我那个setID怎么写呢,oracle可以这么插入吗
大约 2 年之前 回复

insert into your_table (id) values (your_sequences.nextval)
这样就可以插入自增序列,your_sequences 这个是你自己建的序列

yinseye01
yinseye01 回复胆小的我额: 想问问那我的setID中应该怎么写呢?数据库id是bigdecimal类型,求解
大约 2 年之前 回复

你先在oracle里创建一个序列,
如序列名为:table_name_seq
表名为:table_name
你想为id字段使用自增长序列,则用jdbc执行以下sql:
insert table_name(id,name) values(table_name_seq.nextval,'hello')

主动插入值:序列.nextval

用insert语句添加内容,在ID的地方写成:自增序列名.NEXT_VAL,其他位置依然输入你要增加的内容

参考:https://zhidao.baidu.com/question/305161359.html

yinseye01
yinseye01 回复小鼠标丶: 求问,那我setID的地方该怎么改呢?直接用语句插入吗?我之前那种方法不要了?
大约 2 年之前 回复

mysql好像是建表的时候直接设置的你可以 百度一下 或者你也可以另外建一个表 我举个例子 就两列 objectno (主键) count 第一个可以是时间 比如20170819
然后你每次要新增的时候可以调一个select方法 select搜索完 对结果进行判断 有就更新 没有就插入 再返回你需要的 就按你当前的时间来 (比如到日期) 如果搜索到就获取出来
如果没有就新增 这样的话你也可以自定义你的流水号 比较方便 看起来舒服一点
我之前也是用oracle 换了sqlserver之后也不习惯 你可以用mysql自带的也可以用这种 自带的 网上一百度应该就有

qq_37011270
qq_37011270 。。。不对 说反了 create sequence xx increment by 增长量 start with n(从哪个开始) maxvalue m(最大值) nocycle(不循环) no cache(不缓冲) sql 当前是xx.curval 下一个 是xx.nextval
大约 2 年之前 回复

create sequence xx increment by 1 (增长量)
start with n(从哪个开始)
maxvalue m(最大值)
nocycle(不循环)
no cache(不缓冲)
sql: 当前是xx.curval
下一个 是xx.nextval

首先要新建一个序列,然后在要插入数据的地方,调用新建的序列号,nextval是下一列数字,current是当前列的数字

例如:
CREATE sequence seq (--创建序列)
start with 1 ( --初始值从1开始)
然后执行
然后插入数据的时候
insert into usreinfo(id,username) values(seq.nextval,'Oracle')

注意:seq.nextval 为下一列,seq.current 为当前列

yinseye01
yinseye01 回复YongqiangGao: 我上了图,这样子我应该怎么写方法呢?能有具体的方法吗
大约 2 年之前 回复

package com.company.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.company.exception.ConnectionException;

public class GetLiuShuiNo{

public  String getObjectNo(String jiwei) {
    Date date =new Date();
    String t="";
    String objectno="";
    GetLiuShuiNo liushuido=new GetLiuShuiNo();
    if(jiwei.equals("year")){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
         t=sdf.format(date);
    }else if(jiwei.equals("month")){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
         t=sdf.format(date);
    }else if(jiwei.equals("day")){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
         t=sdf.format(date);
    }else if(jiwei.equals("hour")){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHH");
         t=sdf.format(date);
    }else if(jiwei.equals("minute")){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
         t=sdf.format(date);
    }

    objectno=liushuido.shiji(t);
    return objectno;
}

public  String shiji(String t) {

    String sql = "select * from  objectno3 where riqi='"+t+"'";
    int result=0;
    GetLiuShuiNo liushuido=new GetLiuShuiNo();
    Connection connection = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;

    try {
        connection = FirstDo.getConnection();
        pstmt = connection.prepareStatement(sql);
        rs = pstmt.executeQuery();
        if (rs.next()) {
            result=rs.getInt("number");
            System.out.println(result+"....");
            int tt=liushuido.update( (result+1), t); 
            System.out.println(tt);
        }else{
            result=liushuido.insert(t);
            System.out.println(result+"...");
            int gg=liushuido.update(2, t);
            System.out.println("gg"+gg);
        }


    } catch (ConnectionException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        // 依次关闭相关资源
        FirstDo.close(null, pstmt, connection);
    }
    String pinjie="";
    if(result<10){
        pinjie="00"+String.valueOf(result);
    }else if(result<100){
        pinjie="0"+String.valueOf(result);
    }else{
        pinjie=String.valueOf(result);
    }
    String objectno=t+pinjie;
    return objectno;
}








public int insert(String t) {
    int result = 0; 
    String sql = "insert into objectno3 values('"+t+"','1')";

    Connection connection = null;
    PreparedStatement pstmt = null;

    try {
        connection = FirstDo.getConnection();
        pstmt = connection.prepareStatement(sql);

        result = pstmt.executeUpdate();
    } catch (ConnectionException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        // 依次关闭相关资源
        FirstDo.close(null, pstmt, connection);
    }

    return result;
}
public int update(int number,String riqi){
    int result = 0;
    String num=String.valueOf(number);
    String sql="update objectno3 set number='"+num+"' where riqi='"+riqi+"'";
    Connection connection = null;
    PreparedStatement pstmt = null;

    try {
        connection = FirstDo.getConnection();
        pstmt = connection.prepareStatement(sql);

        result = pstmt.executeUpdate();
    } catch (ConnectionException e) {
        e.printStackTrace();
    } catch (SQLException e) {
        e.printStackTrace();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        // 依次关闭相关资源
        FirstDo.close(null, pstmt, connection);
    }

    return result;

}

}
再给你个我这两天自己写的 不知道你啊用的上 我也是个菜鸡 经常来问问题。。。

yinseye01
yinseye01 回复qq_37011270: 那前辈我现在想插入自增主键的话,java 中的方法应该怎么写呢?我上了图
大约 2 年之前 回复

图片说明

yinseye01
yinseye01 回复编程爱好者熊浪: 是不是所有字段都用insert插入啊?我之前那种方法不需要了?
大约 2 年之前 回复
yinseye01
yinseye01 回复编程爱好者熊浪: 我主要要把我文件的id保存进表
大约 2 年之前 回复
yinseye01
yinseye01 回复编程爱好者熊浪: 搞了搞还是不行啊..就是根据你的main我那个setID里写什么呢?数据库里id是bigdecimal类型的![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/3.gif)
大约 2 年之前 回复
共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java使用atomikos实现多数据源(Oralce)的事务报错问题
-
oralce 多个存储过程往同一张表插入数据可行吗,会不会出现死锁等异常现象
-
oralce数据库中给列添加注释的时候报ora-00903怎么解决?
-
Oralce数据库批量插入问题
-
关于使用oracle序列增长过快的问题.
-
oralce集群如何开启数据库白名单
-
Oralce11g创建过程,Java调用问题
-
oralce 今天遇到了一个模糊检索问题
-
php向oralce一次插入多个记录问题,求解
-
elasticsearch 从oralce导入400w条数据 大概需要多少硬盘空间
-
【求助】eclipse导入了Oracle的驱动包连不上Oracle
-
centos安装oralce问题
-
C# Nhiberate mapping bycode 映射oralce数据库
-
oralce sql developer连接不上
-
oralce查询某个字段合计到某个值时的所有行
-
急求,JAVA 多线查询ORACLE线程卡住
-
关于oralce的date类型
-
oralce 语句问题 求高手解释。
-
oralce中自定义类型的查询问题
-
程序员实用工具网站
目录 1、搜索引擎 2、PPT 3、图片操作 4、文件共享 5、应届生招聘 6、程序员面试题库 7、办公、开发软件 8、高清图片、视频素材网站 9、项目开源 10、在线工具宝典大全 程序员开发需要具备良好的信息检索能力,为了备忘(收藏夹真是满了),将开发过程中常用的网站进行整理。 1、搜索引擎 1.1、秘迹搜索 一款无敌有良心、无敌安全的搜索引擎,不会收集私人信息,保...
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
别再翻了,面试二叉树看这 11 个就够了~
写在前边 数据结构与算法: 不知道你有没有这种困惑,虽然刷了很多算法题,当我去面试的时候,面试官让你手写一个算法,可能你对此算法很熟悉,知道实现思路,但是总是不知道该在什么地方写,而且很多边界条件想不全面,一紧张,代码写的乱七八糟。如果遇到没有做过的算法题,思路也不知道从何寻找。面试吃了亏之后,我就慢慢的做出总结,开始分类的把数据结构所有的题型和解题思路每周刷题做出的系统性总结写在了 Github...
让程序员崩溃的瞬间(非程序员勿入)
今天给大家带来点快乐,程序员才能看懂。 来源:https://zhuanlan.zhihu.com/p/47066521 1. 公司实习生找 Bug 2.在调试时,将断点设置在错误的位置 3.当我有一个很棒的调试想法时 4.偶然间看到自己多年前写的代码 5.当我第一次启动我的单元测试时 ...
接私活必备的 10 个开源项目!
点击蓝色“GitHubDaily”关注我加个“星标”,每天下午 18:35,带你逛 GitHub!作者 | SevDot来源 | http://1t.click/VE8W...
GitHub开源的10个超棒后台管理面板
目录 1、AdminLTE 2、vue-Element-Admin 3、tabler 4、Gentelella 5、ng2-admin 6、ant-design-pro 7、blur-admin 8、iview-admin 9、material-dashboard 10、layui 项目开发中后台管理平台必不可少,但是从零搭建一套多样化后台管理并不容易,目前有许多开源、免费、...
100 个网络基础知识普及,看完成半个网络高手
欢迎添加华为云小助手微信(微信号:HWCloud002或HWCloud003),输入关键字“加群”,加入华为云线上技术讨论群;输入关键字“最新活动”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩! 1)什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2)OSI 参考模型的层次是什么? 有 7 个 OSI 层:物理...
VS CODE远程开发入门
在我们办公室,通常配置两台电脑,一台 Windows 主机,主要用于办公、即时通讯,一台 Linux 主机,用于开发。一般开发人员习惯用 Windows 系统下的工具,比如 Source Insight ,但代码需要在 Linux 下编译。这样就需要 Windows 和 Linux 之间协作,通常的做法是在 Linux 下安装 samba 服务,通过 Windows 共享访问。今天看到一篇文章,...
中国最顶级的一批程序员,从首富到首负!
过去的20年是程序员快意恩仇的江湖时代通过代码,实现梦想和财富有人痴迷于技术,做出一夜成名的产品有人将技术变现,创办企业成功上市这些早一代的程序员们创造的奇迹引发了一浪高...
为什么面向对象糟透了?
又是周末,编程语言“三巨头”Java, Lisp 和C语言在Hello World咖啡馆聚会。服务员送来咖啡的同时还带来了一张今天的报纸, 三人寒暄了几句, C语言翻开了...
分享靠写代码赚钱的一些门路
作者 mezod,译者 josephchang10如今,通过自己的代码去赚钱变得越来越简单,不过对很多人来说依然还是很难,因为他们不知道有哪些门路。今天给大家分享一个精彩...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
世界上最好的学习法:费曼学习法
你是否曾幻想读一遍书就记住所有的内容?是否想学习完一项技能就马上达到巅峰水平?除非你是天才,不然这是不可能的。对于大多数的普通人来说,可以通过笨办法(死记硬背)来达到学习的目的,但效率低下。当然,也可以通过优秀的学习法来进行学习,比如今天讲的“费曼学习法”,可以将你的学习效率极大的提高。 费曼学习法是由加拿大物理学家费曼所发明的一种高效的学习方法,费曼本身是一个天才,13岁自学微积分,24岁加入曼...
学Linux到底学什么
来源:公众号【编程珠玑】 作者:守望先生 网站:https://www.yanbinghu.com/2019/09/25/14472.html 前言 ​我们常常听到很多人说要学学Linux或者被人告知说应该学学Linux,那么学Linux到底要学什么? 为什么要学Linux 在回答学什么之前,我们先看看为什么要学。首先我们需要认识到的是,很多服务器使用的是Linux系统,而作为服务器应...
深入理解C语言指针
一、指针的概念 要知道指针的概念,要先了解变量在内存中如何存储的。在存储时,内存被分为一块一块的。每一块都有一个特有的编号。而这个编号可以暂时理解为指针,就像酒店的门牌号一样。 1.1、变量和地址 先写一段简单的代码: void main(){ int x = 10, int y = 20; } 这段代码非常简单,就是两个变量的声明,分别赋值了 10、20。我们把内存当做一个酒店,而每个房间就...
C语言实现推箱子游戏
很早就想过做点小游戏了,但是一直没有机会动手。今天闲来无事,动起手来。过程还是蛮顺利的,代码也不是非常难。今天给大家分享一下~ 一、介绍 开发语言:C语言 开发工具:Dev-C++ 5.11 日期:2019年9月28日 作者:ZackSock 也不说太多多余的话了,先看一下效果图: 游戏中的人物、箱子、墙壁、球都是字符构成的。通过wasd键移动,规则的话就是推箱子的规则,也就不多说了。 二、代...
面试官:兄弟,说说基本类型和包装类型的区别吧
Java 的每个基本类型都对应了一个包装类型,比如说 int 的包装类型为 Integer,double 的包装类型为 Double。基本类型和包装类型的区别主要有以下 4 点。
8000字干货:那些很厉害的人是怎么构建知识体系的
本文约8000字,正常阅读需要15~20分钟。读完本文可以获得如下收益: 分辨知识和知识体系的差别 理解如何用八大问发现知识的连接点; 掌握致用类知识体系的构建方法; 能够应用甜蜜区模型找到特定领域来构建知识体系。 1. 知识体系?有必要吗? 小张准备通过跑步锻炼身体,可因为之前听说过小腿变粗、膝盖受伤、猝死等等与跑步有关的意外状况,有点担心自己会掉进各种坑里,就在微信上问朋友圈一直晒跑步...
Android完整知识体系路线(菜鸟-资深-大牛必进之路)
前言 移动研发火热不停,越来越多人开始学习Android 开发。但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容。市面上也多是谈论知识图谱,缺少体系和成长节奏感,特此编写一份 Android 研发进阶之路,希望能对大家有所帮助。 由于篇幅过长,有些问题的答案并未放在文章当中,不过我都整理成了一个文档归纳好了,请阅读到文末领取~ Ja...
网易云音乐你喜欢吗?你自己也可以做一个
【公众号回复 “1024”,免费领取程序员赚钱实操经验】今天我章鱼猫给大家带来的这个开源项目,估计很多喜欢听音乐的朋友都会喜欢。就目前来讲,很多人对这款音乐 App 都抱...
C语言这么厉害,它自身又是用什么语言写的?
这是来自我的星球的一个提问:“C语言本身用什么语言写的?”换个角度来问,其实是:C语言在运行之前,得编译才行,那C语言的编译器从哪里来? 用什么语言来写的?如果是用C语...
相关热词 用户权限才c# c#应用程序实例 c#请求接口数据 c#高效读写plc c#代码规范快捷方式 c#编辑模板 c# 内存存储 c# poi 生成图表 c#页面 弹出页面选择框 c# 不实现 继承接口