第一题:一张表,里面有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();
分享到:
相关推荐
经测试,jdk1.5只能用mysql5驱动,大家可以自己测试一下
一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action包类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...
java连接mysql数据库的驱动,里边包含两个版本:5.1.47、8.0.28 也可从以下两个地址免费下载: 1. https://repo1.maven.org/maven2/mysql/mysql-connector-java/ 2. ...
centos6.2安装两个mysql.pdf
两个mysql数据库之间实现同步,通过定时任务实现从主库到从库的同步,java代码实现,所有java项目包括配置都有,数据结构可以跟据自己的特定情况去改
mysql,两个数据库,实现实时数据同步
两个MySQL数据库之间同步表结构及索引模式
mysql主从同步配置详解、一台服务器两个mysql,本地安装两个mysql实现主从同步
centos6.2安装两个mysql 宋正河整理
利用Docker,配置两个mysql数据库,并让其主从数据同步
包含mysql8安装包、安装成功配置文件、安装说明、客户端navicat工具
mysql获取两个时间相差年月日:使用mysql存储过程,实现计算两个时间的差值,并用年月日时分秒的格式输出,且从大到小为0时则不展示对应单位(如:相差1小时20秒 则展示'1时0分20秒')
MySQL 2个数据库之间如何共享,包括相关配置及相关步骤
两个分页标签,非常稳定的,可以放心使用。分别用Mysql,Oracle实现的。在Idea下可以打开
连接mysql sqlserver的两个数据库
一台电脑安装两个或多个mysql 。。。。。。。。。。。。。。。。。。。。。。。。。
一个简单JAVA 小工程进行两个MYSQL数据库对象的比较,导入eclipse中,修改jdbc.properties文件中的JDBC信息,然后直接运行action类中的main方法,生成EXCEL,excel中包含表,表中列,索引,函数过程差异比对结果。...
做开发的时候要做MySQL的数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,MySQL的版本是4.1.15,都是目前最新的版本。本文将为大家介绍如何在两台MySQL数据库间实现同步。
mysql jar 驱动包 压缩包内有两个驱动包,使用时导入任何一个就可以了。
MySQL命令行的几个用法MySQL命令行的几个用法MySQL命令行的几个用法MySQL命令行的几个用法MySQL命令行的几个用法MySQL命令行的几个用法