`

Mysql的两个问题

阅读更多
第一题:一张表,里面有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();
分享到:
评论
2 楼 avanry 2010-03-15  
第一个和Mysql表的类型有什么关系呢?
难道是:MyISAM就是18
InnoDB 就是15吗?
1 楼 wcily123 2009-04-24  
问题解决了!

相关推荐

    mysql8、mysql5两个版本驱动

    标题中的“mysql8、mysql5两个版本驱动”指的是用于连接MySQL数据库的Java驱动程序,即`mysql-connector-java`。这个驱动程序允许Java应用程序通过JDBC(Java Database Connectivity)接口与MySQL服务器通信。在给定...

    java实现两个mysql同步主库的数据

    下面我们将深入探讨如何使用Java实现两个MySQL数据库之间的数据同步,以及涉及的相关知识点。 首先,我们需要理解MySQL的复制原理。MySQL的主从复制是基于日志的,主库上的所有更改都会被记录到二进制日志(binlog...

    centos6.2安装两个mysql.pdf

    根据提供的文件内容,以下知识点详细说明了在CentOS 6.2系统中安装两个MySQL实例的过程和相关技术细节: 1. Linux系统用户和组管理:安装MySQL服务前,需要在系统中创建一个专门的用户组和用户来运行MySQL服务,...

    java比较两个mysql数据库中的表信息差异

    一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action包类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...

    MySQL 2个数据库之间的共享

    ### MySQL两个数据库之间的共享 在MySQL环境中实现两个数据库之间的共享主要通过复制机制来完成。本文将详细介绍MySQL数据库间共享的基本概念、配置步骤以及注意事项。 ### 基本概念 #### 复制机制 MySQL的复制...

    centos6.2安装两个mysql--宋正河整理

    本教程由宋正河整理,将详细讲解如何在CentOS 6.2上安装并管理两个独立的MySQL服务。 首先,我们要理解MySQL的安装过程。在CentOS 6.2中,通常通过`yum`包管理器来安装MySQL。执行以下命令: ```bash sudo yum ...

    mysql ,两个数据库,实时数据同步

    本文将介绍如何使用 MySQL 实现两个数据库之间的实时数据同步。 一、环境准备 在进行数据同步之前,需要确保两个数据库的环境配置正确。这里假设主机 IP 为 10.48.248.41,slave 机 IP 为 172.22.1.80,两台机器在...

    mysql-connector-java.zip 两个版本:5.1.47、8.0.28

    java连接mysql数据库的驱动,里边包含两个版本:5.1.47、8.0.28 也可从以下两个地址免费下载: 1. https://repo1.maven.org/maven2/mysql/mysql-connector-java/ 2. ...

    mysql主从同步和一台服务器两个mysql

    MySQL 主从同步和一台服务器两个 MySQL MySQL 主从同步是指将一个 MySQL 服务器的数据实时地复制到另一个 MySQL 服务器上,以提高数据库的高可用性和灾难恢复能力。在本文中,我们将详细介绍如何在一台服务器上配置...

    比较两个MYSQL数据库中的对象差异

    一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...

    两个MySQL数据库之间同步表结构及索引模式.md

    两个MySQL数据库之间同步表结构及索引模式

    Mysql8 一台及其安装两个(Mysql8及其安装文档和成功配置文件压缩包)

    在本文中,我们将深入探讨如何在一台计算机上安装两个MySQL 8.0实例,以及如何利用Navicat作为图形化管理工具进行操作。 首先,我们需要下载MySQL 8.0的安装包。这个压缩包提供了所有必要的文件,包括安装程序和...

    mysql存储过程实现计算两个时间相差,并用年月日时分秒格式输出

    mysql获取两个时间相差年月日:使用mysql存储过程,实现计算两个时间的差值,并用年月日时分秒的格式输出,且从大到小为0时则不展示对应单位(如:相差1小时20秒 则展示'1时0分20秒')

    连接mysql sqlserver的两个数据库

    首先,我们来看标题提到的“连接mysql sqlserver的两个数据库”。这通常涉及到数据库之间的数据迁移、同步或者跨平台查询。为了实现这一目标,我们需要借助特定的驱动程序和工具。 在提供的压缩包文件中,有两个...

    Java比较两个mysql数据库表结构的差异

    一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action包类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...

    对比两个mysql数据库显示差异并生成更新SQL语句,执行到指定数据库

    【作品名称】:对比两个mysql数据库显示差异并生成更新SQL语句,执行到指定数据库 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 ...

    如何在两台MySQL数据库间实现同步

    在开发环境中,有时需要在两台MySQL数据库之间实现数据同步,以确保数据的一致性和冗余。本教程将详细介绍如何在两台运行相同系统(FreeBSD 5.4)和软件(Apache 2.0.55、PHP 4.4.0、MySQL 4.1.15)的服务器上配置...

    一台服务器安装两个版本的mysql(原创).docx

    这篇文章将指导您如何在一台服务器上安装两个版本的 MySQL 服务器,并对它们进行配置和管理。 安装二进制包 首先,我们需要安装二进制包的 MySQL 服务器。首先,我们需要创建一个用户和组,然后解压缩二进制包,并...

    利用Docker,配置两个mysql数据库,并让其主从数据同步.txt

    利用Docker,配置两个mysql数据库,并让其主从数据同步

Global site tag (gtag.js) - Google Analytics