插入一段信息时,下拉框选择了一个信息,这个信息应该是对应的主键(这个主键是自增的)编号录入数据库,但是最后录入的却是这个信息所在的行号。当我删除这条信息,加入其它信息时,下拉框选择才加入的信息,然后那个录入的编号就是行号,导致获取不了这个信息,因为这个信息前面的编号自增了。就是编号和行号不一样了,但是他还是获取的行号。。。
1条回答 默认 最新
- 你知我知皆知 2024-08-10 00:49关注
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题是因为在创建表的时候没有将主键设置为自动增长,并且在添加数据的时候没有更新主键的值。这里提供一个简单的解决方案:
- 创建表结构:
CREATE TABLE MyTable ( ID INT AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(255) );
- 在Java中使用JDBC进行数据操作:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class Main { public static void main(String[] args) throws Exception { String url = "jdbc:mysql://localhost:3306/mydb"; String user = "root"; String password = "password"; try (Connection connection = DriverManager.getConnection(url, user, password)) { PreparedStatement statement = connection.prepareStatement("INSERT INTO MyTable (Name) VALUES (?)"); statement.setString(1, "Test"); int rowsInserted = statement.executeUpdate(); System.out.println(rowsInserted + " row(s) inserted."); // 删除并重新添加数据 statement = connection.prepareStatement("DELETE FROM MyTable WHERE ID=?"); statement.setInt(1, 4); // 使用行号作为ID statement.executeUpdate(); statement = connection.prepareStatement("INSERT INTO MyTable (Name) VALUES (?)"); statement.setString(1, "New Test"); rowsInserted = statement.executeUpdate(); System.out.println(rowsInserted + " row(s) inserted."); } catch (Exception e) { e.printStackTrace(); } } }
在这个例子中,我们首先创建了一个名为
MyTable
的表,并设置了主键为ID
,类型为INT
,并且自动增长。然后我们在Java代码中使用JDBC连接到数据库,并执行插入操作。注意,我们使用的是行号作为ID
而不是主键编号,这样就可以避免问题的发生。解决 无用评论 打赏 举报
悬赏问题
- ¥15 请问GPT语言模型怎么训练?
- ¥15 已知平面坐标系(非直角坐标系)内三个点的坐标,反求两坐标轴的夹角
- ¥15 webots有问题,无响应
- ¥15 数据量少可以用MK趋势分析吗
- ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
- ¥15 大智慧怎么编写一个选股程序
- ¥100 python 调用 cgps 命令获取 实时位置信息
- ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
- ¥15 C语言使用vscode编码错误
- ¥15 用KSV5转成本时,如何不生成那笔中间凭证