数据更新的问题Mysql数据库

时间:2022-09-21 17:28:50
我连接数据库,根据 exam_week和class_name字段查到到要更新的这行数据,然后set  remarks这个字段的值,可以后台一点反应没有,数据也没有被修改. 没找出来哪有错误的,


package com.zyh.service;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * Project Name: sdut-deliver File name: Updatetable.java
 * 
 * @author : zyh
 * @version 创建时间:2017年3月7日 下午6:29:07 TODO
 */
public class Updatetable {

String url = "jdbc:mysql://localhost:3306/sdutEXAM?useSSL=false";
String user = "root";
String password = "root";
String driver = "com.mysql.jdbc.Driver";
Statement stmt;

public void update(String exam_week1, String class_name1, String remarks1) {

try {
Class.forName(driver);

Connection conn = DriverManager.getConnection(url, user, password);
if (!conn.isClosed())
System.out.println("Succeeded connecting to the Database!11111");
stmt = conn.createStatement();
String sqlUpdateTable = "update exam set remarks= '" + remarks1 + "' where exam_week = '" + exam_week1
+ "' and class_name = '" + class_name1+"'";

System.out.println("接下来执行更新");
if(stmt.execute(sqlUpdateTable)){
System.out.println("更新完成\n");
}else {
System.out.println("更新出现问题,数据没有更新\n");
}

stmt.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}

}

}


这是我循环更新的数据,就是没法更新.

第1组数据是: 16-4-5、6   教4408(西)    科学2
Succeeded connecting to the Database!11111
接下来执行更新
更新出现问题,数据没有更新

第2组数据是: 16-4-5、6   教5103(西)    科学
Succeeded connecting to the Database!11111
接下来执行更新
更新出现问题,数据没有更新

........

第24组数据是: 19-5-7、8   教3306(西)    科学
Succeeded connecting to the Database!11111
接下来执行更新
更新出现问题,数据没有更新

第25组数据是: 19-5-7、8   教3208(东)    科学
Succeeded connecting to the Database!11111
接下来执行更新
更新出现问题,数据没有更新

21 个解决方案

#1


而且数据库日志报这个错误:
Aborted connection 135 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 141 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 122 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 133 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 119 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 121 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 123 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 138 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 134 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 143 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 128 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 126 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 137 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 120 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 130 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 140 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)

#2


现在已经不报错了,但是数据还是没有被修改, 有没有遇到过这样的问题....不要沉啊

#3


打个断点看一下就好了,粗略估计是你那个ifelse的问题。。

#4


引用 3 楼 qq_37806499 的回复:
打个断点看一下就好了,粗略估计是你那个ifelse的问题。。

我把if else 去掉了,还是报这个错误

#5


你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊

#6


引用 5 楼 u010223407 的回复:
你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.

#7


引用 6楼我是你的主体 的回复:
Quote: 引用 5 楼 u010223407 的回复:

你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.
数据库连接有没有问题,有没有写个单元测试测试一下?

#8


引用 7 楼 u010223407 的回复:
Quote: 引用 6楼我是你的主体 的回复:
Quote: 引用 5 楼 u010223407 的回复:

你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.
数据库连接有没有问题,有没有写个单元测试测试一下?


数据库连接没问题, 这个连接代码测试过,之前使用这个代码查询过数据库数据,可以查询出来

#9


引用 8 楼 u013492736 的回复:
Quote: 引用 7 楼 u010223407 的回复:

Quote: 引用 6楼我是你的主体 的回复:
Quote: 引用 5 楼 u010223407 的回复:

你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.
数据库连接有没有问题,有没有写个单元测试测试一下?


数据库连接没问题, 这个连接代码测试过,之前使用这个代码查询过数据库数据,可以查询出来

你把执行的sql 打印出来看看有没有问题
各个字段对应下看看

#10


引用 9 楼 u010223407 的回复:
Quote: 引用 8 楼 u013492736 的回复:

Quote: 引用 7 楼 u010223407 的回复:

Quote: 引用 6楼我是你的主体 的回复:
Quote: 引用 5 楼 u010223407 的回复:

你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.
数据库连接有没有问题,有没有写个单元测试测试一下?


数据库连接没问题, 这个连接代码测试过,之前使用这个代码查询过数据库数据,可以查询出来

你把执行的sql 打印出来看看有没有问题
各个字段对应下看看


sql没有问题啊,我把sql复制在终端执行了一下,可以更新数据库中的值
这个控制台输出来的sql
choose = 201701
已经进入Qquery
Succeeded connecting to the Database!
78
Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '通信23系' where exam_week='16-4-5、6' and class_name='教4408(西)'

Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '基22础许' where exam_week='16-4-5、6' and class_name='教5103(西)'

Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '科学' where exam_week='16-4-5、6' and class_name='教5201(西)'

#11


再加一些信息,我前台用户名和密码登录后, 进入一个显示数据库数据的table表格界面.我修改表格中的数据后,再传会到后台,现在后台已经有数据了.就是这个table表格中的数据. 然后我想着一行一行的进行更新,循环取出每一行的数据, 取出一行数据,就调用一次更新的方法.就是最上面的代码. 已经排除了sql语句的问题,sql语句是正确的. 还有连接的代码也是可以的,我写了一个查询的测试代码,可以查出数据来. 就是stmt.execute(sqlUpdateTable)的返回值是0,不应该是0啊,这个方法的返回值是此次执行影响的行数.应该是1啊. 也就是说这个方法,根本没有执行吗? 执行完后台所有的数据还是没有变.   这个问题困扰了我两天了.mysql报错的问题已经解决了.现在也不报错.数据也没有更改....求救啊

#12


首先execute方法的返回值是:如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false
肯定是false,但是为什么没有更新成功就不知道了

#13


是不是没有提交啊

#14


引用 13 楼 sz_lv 的回复:
是不是没有提交啊


你说的没提交是前台数据没提交,还是后台数据? 前台数据提交后在后台已经可以查到,但是执行后台数据时,就是没有更新

#15


我说的提交是 你执行完update  是不是没有执行commit呀... 数据更新的问题Mysql数据库

#16


引用 15 楼 sz_lv 的回复:
我说的提交是 你执行完update  是不是没有执行commit呀... 数据更新的问题Mysql数据库


显示的是自动提交啊
mysql> show variables like '%autocommit%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+

#17


引用 10 楼 u013492736 的回复:
Quote: 引用 9 楼 u010223407 的回复:

Quote: 引用 8 楼 u013492736 的回复:

Quote: 引用 7 楼 u010223407 的回复:

Quote: 引用 6楼我是你的主体 的回复:
Quote: 引用 5 楼 u010223407 的回复:

你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.
数据库连接有没有问题,有没有写个单元测试测试一下?


数据库连接没问题, 这个连接代码测试过,之前使用这个代码查询过数据库数据,可以查询出来

你把执行的sql 打印出来看看有没有问题
各个字段对应下看看


sql没有问题啊,我把sql复制在终端执行了一下,可以更新数据库中的值
这个控制台输出来的sql
choose = 201701
已经进入Qquery
Succeeded connecting to the Database!
78
Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '通信23系' where exam_week='16-4-5、6' and class_name='教4408(西)'

Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '基22础许' where exam_week='16-4-5、6' and class_name='教5103(西)'

Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '科学' where exam_week='16-4-5、6' and class_name='教5201(西)'

有没有异常出来  你捕获一下   打出来看看

#18


事务没有提交。

#19


试试重新建一个mysql用户,不要用root账户

#20


引用 18 楼 szx_zsx 的回复:
事务没有提交。

我设置的是自动提交啊

#21


引用 19 楼 twren 的回复:
试试重新建一个mysql用户,不要用root账户


我新建了一个用户,还是不可以

#1


而且数据库日志报这个错误:
Aborted connection 135 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 141 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 122 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 133 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 119 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 121 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 123 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 138 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 134 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 143 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 128 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 126 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 137 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 120 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 130 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 140 to db: 'sdutEXAM' user: 'root' host: 'localhost' (Got an error reading communication packets)

#2


现在已经不报错了,但是数据还是没有被修改, 有没有遇到过这样的问题....不要沉啊

#3


打个断点看一下就好了,粗略估计是你那个ifelse的问题。。

#4


引用 3 楼 qq_37806499 的回复:
打个断点看一下就好了,粗略估计是你那个ifelse的问题。。

我把if else 去掉了,还是报这个错误

#5


你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊

#6


引用 5 楼 u010223407 的回复:
你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.

#7


引用 6楼我是你的主体 的回复:
Quote: 引用 5 楼 u010223407 的回复:

你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.
数据库连接有没有问题,有没有写个单元测试测试一下?

#8


引用 7 楼 u010223407 的回复:
Quote: 引用 6楼我是你的主体 的回复:
Quote: 引用 5 楼 u010223407 的回复:

你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.
数据库连接有没有问题,有没有写个单元测试测试一下?


数据库连接没问题, 这个连接代码测试过,之前使用这个代码查询过数据库数据,可以查询出来

#9


引用 8 楼 u013492736 的回复:
Quote: 引用 7 楼 u010223407 的回复:

Quote: 引用 6楼我是你的主体 的回复:
Quote: 引用 5 楼 u010223407 的回复:

你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.
数据库连接有没有问题,有没有写个单元测试测试一下?


数据库连接没问题, 这个连接代码测试过,之前使用这个代码查询过数据库数据,可以查询出来

你把执行的sql 打印出来看看有没有问题
各个字段对应下看看

#10


引用 9 楼 u010223407 的回复:
Quote: 引用 8 楼 u013492736 的回复:

Quote: 引用 7 楼 u010223407 的回复:

Quote: 引用 6楼我是你的主体 的回复:
Quote: 引用 5 楼 u010223407 的回复:

你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.
数据库连接有没有问题,有没有写个单元测试测试一下?


数据库连接没问题, 这个连接代码测试过,之前使用这个代码查询过数据库数据,可以查询出来

你把执行的sql 打印出来看看有没有问题
各个字段对应下看看


sql没有问题啊,我把sql复制在终端执行了一下,可以更新数据库中的值
这个控制台输出来的sql
choose = 201701
已经进入Qquery
Succeeded connecting to the Database!
78
Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '通信23系' where exam_week='16-4-5、6' and class_name='教4408(西)'

Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '基22础许' where exam_week='16-4-5、6' and class_name='教5103(西)'

Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '科学' where exam_week='16-4-5、6' and class_name='教5201(西)'

#11


再加一些信息,我前台用户名和密码登录后, 进入一个显示数据库数据的table表格界面.我修改表格中的数据后,再传会到后台,现在后台已经有数据了.就是这个table表格中的数据. 然后我想着一行一行的进行更新,循环取出每一行的数据, 取出一行数据,就调用一次更新的方法.就是最上面的代码. 已经排除了sql语句的问题,sql语句是正确的. 还有连接的代码也是可以的,我写了一个查询的测试代码,可以查出数据来. 就是stmt.execute(sqlUpdateTable)的返回值是0,不应该是0啊,这个方法的返回值是此次执行影响的行数.应该是1啊. 也就是说这个方法,根本没有执行吗? 执行完后台所有的数据还是没有变.   这个问题困扰了我两天了.mysql报错的问题已经解决了.现在也不报错.数据也没有更改....求救啊

#12


首先execute方法的返回值是:如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false
肯定是false,但是为什么没有更新成功就不知道了

#13


是不是没有提交啊

#14


引用 13 楼 sz_lv 的回复:
是不是没有提交啊


你说的没提交是前台数据没提交,还是后台数据? 前台数据提交后在后台已经可以查到,但是执行后台数据时,就是没有更新

#15


我说的提交是 你执行完update  是不是没有执行commit呀... 数据更新的问题Mysql数据库

#16


引用 15 楼 sz_lv 的回复:
我说的提交是 你执行完update  是不是没有执行commit呀... 数据更新的问题Mysql数据库


显示的是自动提交啊
mysql> show variables like '%autocommit%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+

#17


引用 10 楼 u013492736 的回复:
Quote: 引用 9 楼 u010223407 的回复:

Quote: 引用 8 楼 u013492736 的回复:

Quote: 引用 7 楼 u010223407 的回复:

Quote: 引用 6楼我是你的主体 的回复:
Quote: 引用 5 楼 u010223407 的回复:

你先要确定是哪个环节出的问题,是数据没到后台,还是修改出现异常,直接贴代码谁帮你调试啊


前台数据已经到后台, 把数据更新到后台时,后台数据没有更新.还是原来的数据.
数据库连接有没有问题,有没有写个单元测试测试一下?


数据库连接没问题, 这个连接代码测试过,之前使用这个代码查询过数据库数据,可以查询出来

你把执行的sql 打印出来看看有没有问题
各个字段对应下看看


sql没有问题啊,我把sql复制在终端执行了一下,可以更新数据库中的值
这个控制台输出来的sql
choose = 201701
已经进入Qquery
Succeeded connecting to the Database!
78
Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '通信23系' where exam_week='16-4-5、6' and class_name='教4408(西)'

Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '基22础许' where exam_week='16-4-5、6' and class_name='教5103(西)'

Succeeded connecting to the Database! 更新数据库测试
这是sql执行的过程,查看一下 = update exam set remarks= '科学' where exam_week='16-4-5、6' and class_name='教5201(西)'

有没有异常出来  你捕获一下   打出来看看

#18


事务没有提交。

#19


试试重新建一个mysql用户,不要用root账户

#20


引用 18 楼 szx_zsx 的回复:
事务没有提交。

我设置的是自动提交啊

#21


引用 19 楼 twren 的回复:
试试重新建一个mysql用户,不要用root账户


我新建了一个用户,还是不可以