请各位技术高手帮忙解决个问题,网站常有的技术解决问题!j2ee+mysql 排名管理机制

请各位技术高手帮忙解决个问题,网站常有的技术解决问题!j2ee+mysql 排名管理机制,第1张

使用循环的问题: 在数据库里,其实不是你想的那种"循环".只不过是对于一张表的多个记录进行UPDATE而已.

要解决的办法就是改变数据表结构.这个要你自己衡量工作量了.

解决的思路其实是参考链表的.如果你对JAVA了解较深的话很容易就应该想到了.就是arrayList和linkedList的区别.

要想每次插入,只更改有限条记录,解决方法是,现有的ABC.....的排序记录,不是以index为字段,而是以上下记录的主键作为字段.

举例说明:

A,B,C,D,E5个记录一共.现有的排列顺序是从A→E顺序.有如下表结构:

编号 下一个记录的编号

AB

BC

CD

DE

ENULL

当你要在C和D当中插入一条记录T,只要修改C这条记录就OK.

编号 下一个记录的编号

AB

BC//不变

CT//变动1

TD//变动2

DE//不变

ENULL

显然的,在增删改的问题上,这样的表结构非常高效,但是你也能看到,在遍历的问题上,显然效率非常差.我现在是用的最后一个记录的"下一条"为NULL,那么遍历的时候是反过来的.首先找到最后一条(WHERE NEXT is NULL)然后"顺藤摸瓜"找下去.

或者如果你的业务一般都是从头开始往下找,那么表结构是

编号 上一条记录

A NULL

B A

C B

这样子.

--------------------------------------

因为你只问了如何解决增删改的问题.所以就帮你解决到这好了.

但是得提醒你,在日常的遍历查询的时候,这样的结构是非常低效的.

你也可以自己想想综合的解决方案

///////////////以后麻烦用追问,不然都没地方回答你新提出来的问题.

补充回答:我回答的时候没看到 carefreeJava的回答,我和他的意思是差不多的.我比他少用一个字段.

但是我反问一句,你真的认真看了别人的回答了吗?我和 carefreeJava都是用java里的LIST的差别让你便于理解,我们俩给出的解决方案难道不是基于数据库的吗?

循环遍历什么的,JAVA显然可以实现,数据库难道就实现不了吗?

package com.db.connection

import java.sql.Connection

import java.sql.DriverManager

import java.sql.PreparedStatement

import java.sql.ResultSet

import java.sql.SQLException

import java.sql.Statement

import javax.sql.DataSource

import otc.OtcDBcontrol

public class DBUtil {

public Connection conn

public ResultSet rs

public Statement st

public PreparedStatement ps

public DataSource ds

public boolean flag = false

public DBUtil() throws SQLException {

getConnection()

}

/**

* 打开连接

* @throws SQLException

*/

public void getConnection() throws SQLException {

try {

if (conn == null) {

Class.forName("org.gjt.mm.mysql.Driver")

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/otc?user=root&password=123&useUnicode=true&characterEncoding=UTF-8")

conn.setAutoCommit(false)

}

} catch (Exception e) {

e.printStackTrace()

}

st = conn.createStatement()

}

/**

* 关闭连接

* @throws SQLException

*/

public void close() throws SQLException {

if (st != null) {

st.close()

}

if (conn != null) {

conn.close()

}

}

/**

* 查询

* @param sql

* @return

* @throws SQLException

*/

public ResultSet query(String sql) throws SQLException {

System.out.println(sql)

rs = st.executeQuery(sql)

return rs

}

/**

* 增删改

* @param sql

* @return

* @throws SQLException

*/

public boolean update(String sql) throws SQLException {

System.out.println(sql)

int s = 1

s = st.executeUpdate(sql)

if (s != 0) {

conn.setAutoCommit(false)

conn.commit()

flag = true

} else {

conn.rollback()

flag = false

}

return flag

}

}

这个是代码,只需要改你自己的数据库用户名密码就可以了~


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/6159442.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-16
下一篇2023-03-16

发表评论

登录后才能评论

评论列表(0条)

    保存