您先帮我看一下这个代码我现在这个是数据库连接的类下面我有一个返回连接对象的方法我每次调用 这个 public static Connection getconn() 方法的时候都会返回一个不同的对象我把数据库连接对象声明成这样的private static Connection conn(这样写会在几个人一起连接数据库的时候出现错误,我不明白为什么会出现错误,既然每次返回的都是不同的对象为什么不能加static,就算加了static 也是重新给它一个指向)一定要说的明白些 我实在想不通 为什么有static 修饰 Connection conn不行 谢谢了啊!!(最好能画一下内存图)public class GetDBtest {
private static String url="jdbc:mysql://localhost:3306/test";
private static String forname="com.mysql.jdbc.Driver";
private static String user="root";
private static String password="root";
private static GetDBtest db;
private static Connection conn;
private GetDBtest(){
try {
Class.forName(forname);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static GetDBtest getdb(){
if(db==null)
db=new GetDBtest();
return db;
}
public static Connection getconn(){
try {
conn=DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
}
private static String url="jdbc:mysql://localhost:3306/test";
private static String forname="com.mysql.jdbc.Driver";
private static String user="root";
private static String password="root";
private static GetDBtest db;
private static Connection conn;
private GetDBtest(){
try {
Class.forName(forname);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static GetDBtest getdb(){
if(db==null)
db=new GetDBtest();
return db;
}
public static Connection getconn(){
try {
conn=DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
}
解决方案 »
- 一段罕见的EJB调用报错AppSetRollbackOnlyException
- java swing让JPanel的图片自动缩放
- 一个不断更新得 JTextArea
- tomcat报错:conn.rollback();中conn can't be resolved .急!请各位高手不吝赐教啊
- jgoodies formlayout
- java 如何制作工具栏和状态栏 小弟新手 可以写的详细些吗?
- 取时间数值:2008-12-8 13:24:40,我要把数值分别放到里面去StringBuffer s1,s2,s3,s4,s5,s6;怎么写?
- 求助,java Swing实现软键盘
- 怎样在JAVA中的SQL语句中加入JAVA变量.
- 大哥大姐请帮帮我这个小忙,小的感激不尽
- Java连接SQL Server 2000失败的原因
- Java 启动时 产生 9 个线程 HelloWorld
private static String url="jdbc:mysql://localhost:3306/test";
private static String forname="com.mysql.jdbc.Driver";
private static String user="root";
private static String password="root";
private static GetDBtest db;
private static Connection conn;
private GetDBtest(){
try {
Class.forName(forname);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
conn=DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
这里没有对conn进行同步,所以多个用户使用的时候会出问题
用户A和B可能使用同一个conn(A用户执行return conn前,B用户重新对conn付了值),A关闭了,B却还在用,所以报错。这个东西从设计上就是错的
conn不能使用单列的,在项目中应该采用连接池的设计