我的编程空间,编程开发者的网络收藏夹
学习永远不晚

jdbc:mysql和oracle插入一条数据返回主键

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

jdbc:mysql和oracle插入一条数据返回主键

package org.sin.common.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import oracle.jdbc.OracleTypes;

import org.sin.domain.User;

public class JDBCDao {

	private static boolean mysql = false;
	private Connection conn;
	static {
		try {
			if (mysql) {
				Class.forName("com.mysql.jdbc.Driver");
			} else {
				Class.forName("oracle.jdbc.driver.OracleDriver");
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	private JDBCDao() {
		String url, user, password;
		if (mysql) {
			url = "jdbc:mysql://127.0.0.1:3306/cl";
			user = "root";
			password = "";
		} else {
			url = "jdbc:oracle:thin:@localhost:1521:orcl";
			user = "andy";
			password = "root";
		}
		try {
			conn = DriverManager.getConnection(url, user, password);
			System.out.println(conn.getAutoCommit());
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	private User SaveUser(User user) {
		String sql = "insert into t_User(id,username,password) values(user_id.nextval,?,?)";
		Long id = -1L;
		try {
			conn.setAutoCommit(false);
			PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
			int i = 0;
			for (i = 0; i < 10000; i++) {
				ps.setString(1, user.getUsername() + "-" + i);
				ps.setString(2, user.getPassword() + "-" + i);
				ps.executeUpdate();
				ResultSet rs = ps.getGeneratedKeys();
				while (rs.next()) {
					id = rs.getLong(1);
					System.out.println(">>>>>>>" + id);
				}
			}
			conn.commit();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		user.setId(id);
		return user;
	}

	private User SaveUser2(User user) {
		String sql = "BEGIN insert into t_user(id,username,password) values(user_id.nextval,?,?) returning id into ?; END;";
		Long id = -1L;
		try {
			conn.setAutoCommit(false);
			CallableStatement cs = conn.prepareCall(sql);
			for(int i=0;i<10000;i++){
			cs.setString(1, user.getUsername() + "-" + i);
			cs.setString(2, user.getPassword() + "-" + i);
			cs.registerOutParameter(3, OracleTypes.NUMBER);
			cs.execute();
			id = cs.getLong(3);
			}
			conn.commit();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		user.setId(id);
		return user;
	}

	public static void main(String[] args) {
		JDBCDao dao = new JDBCDao();
		Long start = System.currentTimeMillis();
		User u = new User("andy", "andypwd");
		dao.SaveUser2(u);
		Long end = System.currentTimeMillis();
		System.out.println(u.getId() + "--" + u.getUsername());
		Long k = end - start;
		System.out.println("消耗:" + k);
	}

}


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

jdbc:mysql和oracle插入一条数据返回主键

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python3 操作 MySQL 插入一条数据并返回主键 id的实例

Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据#!/usr/bin/env python3 # -*- coding: UTF-8 -*- import pymysql
2022-05-27

Mybatis如何插入一条或批量插入返回带有自增长主键记录

这篇文章主要介绍了Mybatis如何插入一条或批量插入返回带有自增长主键记录,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先讲一下, 插入一条记录返回主键的 Mybatis
2023-05-30

在数据库中更新插入不使用主键或唯一约束的行

在我 7 年的程序员职业生涯中,我大部分时间都是通过 orm 与 sql 交互。我发现 laravel 的 eloquent orm 的一个特别有用的功能是它的 updateorinsert() 方法:db::table('posts')-
在数据库中更新插入不使用主键或唯一约束的行
2024-10-19

编程热搜

目录