Mysql 如何 得到新插入的字段ID

本文介绍了一段用于在MySQL中插入数据并获取新插入记录ID的代码示例,适用于初学者理解如何操作数据库。

Mysql 如何 得到新插入的字段ID

 

N年前的代码应该还能用

 

/**
	 * @param dataSource
	 * @param sql
	 * @param params
	 * @return
	 * @throws SQLException
	 */
	public static int insertAndGetId(DataSource dataSource, String sql, Object[] params)
			throws SQLException {
		Connection con = dataSource.getConnection();
		PreparedStatement pstmt = con.prepareStatement(sql);
		try {
			for (int i = 1; i <= params.length; i++) {
				pstmt.setObject(i, params[i - 1]);
			}
			pstmt.executeUpdate();
			ResultSet rs = pstmt.executeQuery("SELECT LAST_INSERT_ID()");
			rs.next();
			int newId = rs.getInt(1);
			rs.close();
			return newId;
		} finally {
			try {
				pstmt.close();
			} finally {
				con.close();
			}
		}
	}

 

### 关于 MySQL 插入字段的 SQL 脚本或示例 在 MySQL 中,`INSERT INTO` 语句用于向表中插入记录。以下是 `INSERT INTO` 的基本语法: ```sql INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); ``` 如果需要防止重复数据插入,则可以使用 `ON DUPLICATE KEY UPDATE` 或者通过查询来验证是否存在该条目后再执行插入操作。 #### 使用 `PreparedStatement` 在 Java 中实现 MySQL 插入操作 当从 Java 应用程序向 MySQL 数据库插入数据时,推荐使用 `PreparedStatement` 来提高性能并减少 SQL 注入风险。下面是一个简单的例子[^1]: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class MysqlInsertExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb"; String user = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { String sql = "INSERT INTO users (id, name, email) VALUES (?, ?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, 1); // 设置 id 值 pstmt.setString(2, "John Doe"); // 设置名字 pstmt.setString(3, "john.doe@example.com"); // 设置邮箱地址 int affectedRows = pstmt.executeUpdate(); System.out.println("受影响的行数:" + affectedRows); } catch (Exception e) { e.printStackTrace(); } } } ``` 此代码片段展示了如何利用 JDBC 和 `PreparedStatement` 向名为 `users` 的表中插入一条记录。 #### 防止重复记录插入的方法 为了确保不会因尝试插入已存在的键而导致错误发生,在设计数据库结构时应定义唯一约束(Unique Constraint)。之后可以通过以下两种方式之一解决潜在冲突问题: 1. **先查再插**: 查询目标列是否有匹配项;如果没有找到对应的数据才继续进行插入动作。 下面展示了一个 PHP 表单提交前检测 ID 是否已经存在于数据库中的方法[^2]: ```php <?php $conn = mysqli_connect('localhost', 'username', 'password', 'test'); function checkIdExists($id){ global $conn; $query = "SELECT COUNT(*) FROM users WHERE id=?"; $stmt = $conn->prepare($query); $stmt->bind_param("i", $id); $stmt->execute(); $result = $stmt->get_result()->fetch_row()[0]; return ($result > 0)? true : false ; } if(isset($_POST['submit'])){ $new_id=$_POST['userid']; if(checkIdExists($new_id)){ echo '<p style
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值