0 0

关于javaweb的投票网站中mysql数据库的问题10

大家好,
      现在要做一个jsp的投票网站,数据库是mysql,投票时很多用户会同时操作数据库,对数据库进行写操作,比如数据库里的一个表的count字段的值原来是23,有三个用户同时投票,在java里如何控制三个用户投票完成后count的值是26而不是24或者25啊?同时操作数据库时,数据库会自动加锁码?还是要自己在代码里写?


谢谢了   O(∩_∩)O
2012年3月09日 23:18

6个答案 按时间排序 按投票排序

0 0

如果使用锁,多人一起投票,他们操作同一条记录,一个人投票,其他人岂不是要一直等待锁的释放?

lz的问题可以通过数据库设计上考虑下,把每个用户的投票作为一条记录,比如:

CREATE TABLE user_votes (user_id NUMBER,vote_id NUMBER,PRIMARY KEY (vote_id,user_id));


当一个用户投票后,插入user_votes 表一条记录,不存在锁的问题。
总的投票数:通过 select count(*) from user_votes group by vote_id 取得

2012年3月12日 09:59
0 0

代码中通过数据库事务来控制

2012年3月10日 14:02
0 0

给你一个地址看看http://blog.csdn.net/zztfj/article/details/6319740希望能帮助你理解和使用。

2012年3月10日 10:23
0 0

可以采用悲观锁和乐观锁,在方法执行前枷锁就行,但是必须保证是单例的例如:
枷锁
select * from account_user for update;
解除
update account_user set login_time=login_time+1


悲观锁和乐观锁的区别:

了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。

数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁。什么叫悲观锁呢,悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让用户返回错误的信息,让用户决定如何去做。

先从悲观锁开始说。在SqlServer等其余很多数据库中,数据的锁定通常采用页级锁的方式,也就是说对一张表内的数据是一种串行化的更新插入机制,在任何时间同一张表只会插1条数据,别的想插入的数据要等到这一条数据插完以后才能依次插入。带来的后果就是性能的降低,在多用户并发访问的时候,当对一张表进行频繁操作时,会发现响应效率很低,数据库经常处于一种假死状态。而Oracle用的是行级锁,只是对想锁定的数据才进行锁定,其余的数据不相干,所以在对Oracle表中并发插数据的时候,基本上不会有任何影响。

注:对于悲观锁是针对并发的可能性比较大,而一般在我们的应用中用乐观锁足以。

2012年3月10日 10:22
0 0

用spring的话,
就是隔离级别最高的那个。

不过底层的实现也是悲观锁 

2012年3月10日 10:09
0 0

可以采用的方式:加入悲观锁,在插入数据前锁住该表,插入完成后解除
//加入悲观锁
select * from account_user for update;

//执行sql
update account_user set login_time=login_time+1

上面的update语句执行完后锁自动解除,update语句已经commit()并完成。

以前大的网上商城里面就是这么做的

2012年3月10日 08:39

相关推荐

    javaWeb投票管理系统源码(含数据库脚本以及安装说明).rar

    总的来说,这个JavaWeb投票管理系统源码涵盖了Java Web开发的多个方面,从基础的Servlet和JSP,到高级的框架和设计模式,再到数据库管理和项目部署,都是学习和研究的好材料。对于初学者,可以借此了解完整的Web应用...

    javaweb 投票系统(前台管理+后台管理+数据库).rar

    (1)在“jdbc.properties”文件中配置Mysql数据库相关参数,主要是连接url,username,password; (2)新发起的投票主题,需要手动在数据库中将其status改为"Open",用户才能对该主题进行投票; (3)暂时一次只能进行一个...

    JavaWeb投票系统

    JavaWeb项目中常用的数据库有MySQL、Oracle等,可以使用JDBC(Java Database Connectivity)API来连接和操作数据库,执行插入、更新、查询等操作。 5. **Model-View-Controller(MVC)架构**: MVC是一种流行的...

    javaweb的投票系统.zip

    JavaWeb投票系统的实现涉及到多个关键知识点,这些技术与概念构成了基于Java平台的Web应用程序开发的基础。下面我们将深入探讨这些核心内容: 1. **Servlet与JSP**:在JavaWeb开发中,Servlet是服务器端用于处理...

    基于javaweb的投票系统(源码+数据库脚本).zip

    5. **数据库脚本**:提供的数据库脚本用于在MySQL中创建和初始化投票系统的数据结构。这通常包括创建表、设置字段、添加初始数据等。学生在使用时需要将这些脚本导入到自己的MySQL环境中执行。 6. **数据库连接配置...

    javaWeb 投票系统

    3. **MySQL数据库** MySQL是一个广泛使用的开源关系型数据库管理系统,以其高效、稳定和易用性著称。在投票系统中,MySQL用于存储投票相关的数据,如投票主题、选项、用户投票记录等。数据库设计通常包括投票表、...

    Javaweb投票管理系统 SSH投票管理毕业设计 论文+源码+sql脚本 完整源码

    在投票系统中,Hibernate负责处理数据库中的投票记录、用户信息等数据实体,通过HQL或 Criteria API进行数据查询、增删改操作。 4. **数据库设计**:该系统使用MySQL作为数据库,通常包括用户表(存储用户信息)、...

    JavaWeb简易投票系统.zip

    - 为了存储投票数据,系统可能使用了MySQL、Oracle或其他关系型数据库。数据访问层可能通过JDBC(Java Database Connectivity)接口与数据库交互,或者使用ORM框架如Hibernate或MyBatis。 5. **前端技术**: - ...

    基于javaweb的投票系统

    - 如果输入有效,控制器更新模型(数据库中投票记录)并返回确认信息。 - 视图(JSP)根据新的模型状态刷新显示,展示投票结果。 5. **安全性与优化:** - 防止重复投票:系统应具备机制阻止同一用户多次投票,...

    在线投票系统JavaWeb源代码+sql

    8. **数据库技术**:项目可能采用了关系型数据库,如MySQL,用于存储用户信息、投票数据等。SQL(Structured Query Language)是用于管理和处理数据库的语言,vote.sql文件就是使用SQL编写的。 9. **安全性考虑**:...

    基于Javaweb的原创文学网站设计与实现

    2.数据库:MySQL 三、系统功能 原创文学网站主要包括了读者模块、作者模块以及系统管理员模块组成。读者模块主要包括了注册登录、文学作品查询、文学作品投票、读者留言;作者模块主要包括了注册登录、文学作品查询...

    JAVAWEB网上投票系统SSH框架整合开发

    javaweb利用ssh(struts,spring,hibernate)整合开发的网上投票系统,系统内使用Mysql数据库开发,适合还没有入门的初级javaweb网络工程师开发学习使用,保证可以运行,内包含全部所需的jar包。使用时,修改相应的...

    java web 投票系统

    - **数据库**:如MySQL或Oracle,用于存储投票数据,包括每个选项的票数和投票者的相关信息。 4. **系统功能实现** - **用户认证**:可能包含登录注册功能,确保每个用户只能投一次票。 - **投票逻辑**:处理...

    javaweb投票系统源码-java-project2:在线投票:springmvc+jdbc+jsp+mysql

    3.数据库mysql,使用的原生jdbc连接 4.使用到了分页技术:①先写Page类②写PageUtil类③在url中使用?进行带参数的传递来控制分页,在控制器方法使用@RequestParam(或者不使用?,在控制器方法中使用@PathVariable) ...

    计算机毕业设计-投票系统-Java Web项目源码.zip

    数据库技术在投票系统中扮演关键角色,通常会使用关系型数据库如MySQL或Oracle存储投票数据。数据表可能包括投票主题表、选项表和投票记录表,用于记录用户的投票行为。数据库操作通常通过JDBC(Java Database ...

    基于Java Web的网上投票选举系统设计

    本项目标签中提到的MySQL是一种广泛使用的开源关系型数据库管理系统,具有高效、稳定、易用的特点。开发者使用Java的JDBC(Java Database Connectivity)API与MySQL进行交互,实现数据的增删改查操作。 在具体实现...

    Java Web项目开发案例精粹02投票系统源码

    这个系统兼容多种数据库,包括MySQL、SQL Server和Oracle,展示了Java Web开发的灵活性和适应性。 在Java Web开发中,主要涉及的技术栈通常包括Servlet、JSP、JavaBeans(或称Model)、Controller(如Spring MVC的...

    javaweb+javabean+serverlet

    javaweb期末课程设计,基于jsp+javabean+serverlet,是一个基于JSP、JavaBean和Servlet的JavaWeb应用程序。它旨在提供一个用户友好的界面,使用户能够完成投票。 技术实现: JSP:用于创建用户界面,包括展示投票...

    投票管理网站

    【投票管理网站】是一个基于JavaWeb技术开发的在线投票平台,它主要用于实现各种类型的投票活动,如选举、调查、竞赛等。在这个系统中,用户可以创建、参与并管理多个投票项目,同时支持投票数据的统计与展示。接...

Global site tag (gtag.js) - Google Analytics