{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

Java连接access为什么只有select语句有效果增改删成功但实际数据不变?

atinosunatinosun 回答0 收藏1
收藏问题

2条回答

yangrd

yangrd

回答于2022-06-28 15:03

题主给的问题描述太过简短,那么答主只能根据自己理解的方向来说说可能出现错误的原因:

代码的原因

一般情况下Java连接数据库用的都是jdbc,不知道题主的用最基本的jdbc去写的连接access还是使用框架去配置连接的。

  • 使用框架做配置连接

题主也提到了查询能正常查询,那就证明配置信息内容是完全没有问题的,能够正常使用。那这样的话有可能你做增,删,改的的时候对应的数据本来是没有删除,你的判断写的有问题导致,但是这个可能性应该不大。那就可能是sql语句的问题了,下面在详细的说话sql语句的问题。

  • 使用最原始的jdbc操作

能在增删改上面成功,没有报错那证明你的代码敲的是对的,但是你的对应的引用相互调用多次,可能导致错误,打个比喻:Connection conn=new Connection(连接数据库的字符串);

Statement sta=conn.createStatement();

String sql="添加sql语句";

int count=sta.excute(sql);

然后在下面你可能在次用到Statement对象:

String sql="删除sql语句";

int count=sta.excute(sql);

这个时候你多次使用同一个Statement对象很大可能会出现异常

在可能是你操作的数据库和你查看的数据库不是同一个,刚好都用同样的表格:

比如:

Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/exam?characterEncoding=UTF-8","root", "admin");

你现在操作的是exam数据库里面的表格,但是你现在查看的却是其它数据库;这个可能性也有但是估计也不大。

jdbc和比较传统的hibernate

sql语句的问题

  • 如果你是用框架是做的那很大的可能是你配置的sql语句做的是无用操作,什么是无用操作呢?现在数据库里面已经没有了学号为1的学生,但是你还删除这条数据,数据库肯定没有反应。不排除有这种可能但是几率比较小。也有可能你传递过来的删除,修改的条件的条件数据,出现问题也有可能导致删除或者修改失败。

  • 如果你是用jdbc去做的,那很有可能sql语句编写有问题,因为sql语句的字符串拼接其中有很多“ ”和‘ ’的拼接:

比如上图看到的,ssex这个字段在数据库中是一个字符类型,所以在sql语句中需要用‘ ’括起来,这里还要拼一个获取过来的条件。所以‘ ’和“ ”之间的拼接真的很容易出问题。


代码代码,坐等代码

总结:出错的具体原因,真的是需要查看代码才能具体解决,这里能给出来的提示也很有限。以上的出错的原因也是答主自己能给出的几个,希望能帮到题主。

如果有小伙伴有其它的提示,请在评论区留言,或者点个关注我们一起探讨探讨。

评论0 赞同0
  •  加载中...
tinysun1234

tinysun1234

回答于2022-06-28 15:03

这个问题的原因可能不止一个,看到同行回答的也都有道理,但有道理的不一定能解决这个问题,我从实际的应用情况,说明一下碰到的这个问题,或许也是一种启发。

Access数据库也称为桌面型的数据库,是Microsoft Office的一个组件,全称为Microsoft Office Access,这个数据库建立比较简单,建数据表时对主键没有特殊的要求,对于没有建主键的数据表,当你在用Access所带的VBA语言进行开发时,使用SQL语言进行相关的操作是没有问题的。

但是,当你用其他语言连接到Access数据库时,一定要注意,有些语言一定要在有主键的情况下才能进行SQL语句操作,不然就有可能表面操作成功,而实际上没有任何改变。

对于JAVA我不太熟悉,只此是一点开发过程中的经验而已,仅作参考。

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<