第一题:一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15
第二题:还是MYSQL的,一张表有还是有ID自增主键,用JDBC insert一条语句之内,怎么在JAVA程序里面获得这条记录的ID.
第一题:这个要看Mysql表的类型
我现在知道的有两种,一种是MyISAM,另一种是InnoDB
MYSQL默认的就是InnoDB
InnoDB是把表的主键最大值放到内存里面,所以MYSQL重启之后就会丢失(在WINDOW下,这是MYSQL默认的)
MyISAM是把表的主键最大值放到文件里面,所以MYSQL重启之后不会丢失
可以在创建表的时候显示指定
create table t_test(id int not null auto_increment primary key,name varchar(255)) ENGINE=InnoDB;
或
create table t_test(id int not null auto_increment primary key,name varchar(255)) ENGINE=MyISAM;
还可以通过
SHOW TABLE STATUS;
命令可以看到表的类型
使用ALTER命令可以对单个表的类型进行修改
ALTER TABLE talbe_name ENGINE=InnoDB;
用
SHOW GLOBAL VARIABLES LIKE '%engine%';
可以看到MySQL当前默认的新生成表的类型。
第二题:
有两种方法,
1.JDBC有这个API,Statement.getGeneratedKeys();
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection ("jdbc:mysql://localhost:3306/testid","root","root");
// 创建带问号的参数化语句
String template = "insert into t_test(name) values(?) ";
PreparedStatement statement = connection.prepareStatement (template);
statement.setString(1, "langhua1");
statement.execute();
ResultSet rs = statement.getGeneratedKeys();
while(rs.next()){
//获得主键
System.out.println(rs.getInt(1));
}
statement.close();
rs.close();
connection.close();
connection.setAutoCommit(false);
Statement stat = connection.getStatement();
stat.executeUpdate("insert into test (name,password) values('123','321')");
ResultSet rs = stat.executeQuery("select id from test where name='123'");
rs.next();
System.out.println(rs.getInt('id'));
connection.commit();
2.可以利用MySQL语句获得,但这个就不是通用语句了:SELECT LAST_INSERT_ID();
分享到:
相关推荐
标题中的“mysql8、mysql5两个版本驱动”指的是用于连接MySQL数据库的Java驱动程序,即`mysql-connector-java`。这个驱动程序允许Java应用程序通过JDBC(Java Database Connectivity)接口与MySQL服务器通信。在给定...
下面我们将深入探讨如何使用Java实现两个MySQL数据库之间的数据同步,以及涉及的相关知识点。 首先,我们需要理解MySQL的复制原理。MySQL的主从复制是基于日志的,主库上的所有更改都会被记录到二进制日志(binlog...
根据提供的文件内容,以下知识点详细说明了在CentOS 6.2系统中安装两个MySQL实例的过程和相关技术细节: 1. Linux系统用户和组管理:安装MySQL服务前,需要在系统中创建一个专门的用户组和用户来运行MySQL服务,...
一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action包类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...
### MySQL两个数据库之间的共享 在MySQL环境中实现两个数据库之间的共享主要通过复制机制来完成。本文将详细介绍MySQL数据库间共享的基本概念、配置步骤以及注意事项。 ### 基本概念 #### 复制机制 MySQL的复制...
本教程由宋正河整理,将详细讲解如何在CentOS 6.2上安装并管理两个独立的MySQL服务。 首先,我们要理解MySQL的安装过程。在CentOS 6.2中,通常通过`yum`包管理器来安装MySQL。执行以下命令: ```bash sudo yum ...
本文将介绍如何使用 MySQL 实现两个数据库之间的实时数据同步。 一、环境准备 在进行数据同步之前,需要确保两个数据库的环境配置正确。这里假设主机 IP 为 10.48.248.41,slave 机 IP 为 172.22.1.80,两台机器在...
java连接mysql数据库的驱动,里边包含两个版本:5.1.47、8.0.28 也可从以下两个地址免费下载: 1. https://repo1.maven.org/maven2/mysql/mysql-connector-java/ 2. ...
MySQL 主从同步和一台服务器两个 MySQL MySQL 主从同步是指将一个 MySQL 服务器的数据实时地复制到另一个 MySQL 服务器上,以提高数据库的高可用性和灾难恢复能力。在本文中,我们将详细介绍如何在一台服务器上配置...
一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...
两个MySQL数据库之间同步表结构及索引模式
在本文中,我们将深入探讨如何在一台计算机上安装两个MySQL 8.0实例,以及如何利用Navicat作为图形化管理工具进行操作。 首先,我们需要下载MySQL 8.0的安装包。这个压缩包提供了所有必要的文件,包括安装程序和...
mysql获取两个时间相差年月日:使用mysql存储过程,实现计算两个时间的差值,并用年月日时分秒的格式输出,且从大到小为0时则不展示对应单位(如:相差1小时20秒 则展示'1时0分20秒')
首先,我们来看标题提到的“连接mysql sqlserver的两个数据库”。这通常涉及到数据库之间的数据迁移、同步或者跨平台查询。为了实现这一目标,我们需要借助特定的驱动程序和工具。 在提供的压缩包文件中,有两个...
一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action包类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...
【作品名称】:对比两个mysql数据库显示差异并生成更新SQL语句,执行到指定数据库 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 ...
在开发环境中,有时需要在两台MySQL数据库之间实现数据同步,以确保数据的一致性和冗余。本教程将详细介绍如何在两台运行相同系统(FreeBSD 5.4)和软件(Apache 2.0.55、PHP 4.4.0、MySQL 4.1.15)的服务器上配置...
这篇文章将指导您如何在一台服务器上安装两个版本的 MySQL 服务器,并对它们进行配置和管理。 安装二进制包 首先,我们需要安装二进制包的 MySQL 服务器。首先,我们需要创建一个用户和组,然后解压缩二进制包,并...
利用Docker,配置两个mysql数据库,并让其主从数据同步