操作 数据库 数据 的安全性

MattHgh 2006-04-12 11:28:26
做的一个程序
在bean里操作表 abc中的 数据
可能会有很多人一起往表里添加修改删除
这时,我感觉很有可能会几个人同时修改一条记录
这样导致出现点什么错误
所以,在操作数据库的方法上是不是要加同步或线程之类的来控制?
怎么做才能做到安全性最高??



bean内容如下

// sql_data.java
package my;

import java.sql.*;

public class sql_data {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";

String sConnStr = "jdbc:odbc:liuyanban";

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

public sql_data() {
try {
Class.forName(sDBDriver);
} catch (java.lang.ClassNotFoundException e) {
System.err.println("sql_data(): " + e.getMessage());
}
}

public void executeInsert(String sql) {
try {
conn = DriverManager.getConnection(sConnStr);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
} catch (SQLException ex) {
System.err.println("sql_data.executeUpdate:" + ex.getMessage());
}
}

public ResultSet executeQuery(String sql) {
try {
conn = DriverManager.getConnection(sConnStr);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);

} catch (SQLException ex) {
System.err.println("sql_data.executeQuery:" + ex.getMessage());
}
return rs;
}

public void executeUpdate(String sql) {
try {
conn = DriverManager.getConnection(sConnStr);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
} catch (SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
}

public void executeDelete(String sql) {
try {
conn = DriverManager.getConnection(sConnStr);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
} catch (SQLException ex) {
System.err.println("sql_data.executeDelete:" + ex.getMessage());
}
}

public void closeStmt() {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

public void closeConn() {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

}
...全文
233 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
鱼鱼 2006-07-09
  • 打赏
  • 举报
回复
常用的两种解决数据库并发的方法:
悲观锁定和乐观锁定
ll42002 2006-07-08
  • 打赏
  • 举报
回复
数据库有锁,它不允许不同的connection对同一条记录同时作update等操作。
程序级别的,需要加同步
guodawu 2006-07-07
  • 打赏
  • 举报
回复
加锁
kevinliuu 2006-07-07
  • 打赏
  • 举报
回复
把你认为会出现冲突的地方(比如多人同时修改数据)加上同步关键字synchronized

当然,性能肯定会有影响,关键还是从业务角度出发,看是否有必要这么做。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧