jsp运行时一个郁闷问题,一会成功,一会失败

anyuelang 2008-11-10 09:34:56
怎么说呢,这个问题很郁闷,我运行JSP页面,调用后台两个简单的JAVA类。
有时候成功,有时候有异常....
异常占多数...我实在受不了了,我把JAVA代码贴出来,请大家帮帮忙看看~
package rong.web;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Hashtable;
import java.util.Vector;

public class Access_db {
String name = "root";

String password = "root";

String url = "jdbc:mysql://localhost:3306/rtalk";

Connection dbcon = null;

Statement stmt = null;

ResultSet rs = null;

static Access_db ac_db = null;

public Access_db() throws ClassNotFoundException, SQLException {
if (dbcon == null) {
Class.forName("com.mysql.jdbc.Driver");
dbcon = DriverManager.getConnection(url, name, password);
}
}

public static Access_db getInstance() {
try {
ac_db = new Access_db();
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.print("连接出错!");
} catch (SQLException e) {
e.printStackTrace();
System.out.print("连接第二步出错!");
}
return ac_db;
}
//这一次调用是用到下面这个函数的时候报错~
public boolean exeSql(String Sql) {
try {
stmt = dbcon.createStatement();
stmt.executeUpdate(Sql);//单步运行到这的时候,eclipse居然说找不到源;源代码连接不包含文件Connenction.class的源代码;然后叫我点击“更改已连接的源代码”来更改源代码连接
return true;
} catch (SQLException e) {
System.out.print("exeSql error!");
return false;
}

}

public ResultSet Query(String Sql) {
try {
stmt = dbcon.createStatement();
rs = stmt.executeQuery(Sql);
} catch (SQLException e) {
e.printStackTrace();
System.out.print("Query error!");
// System.out.print(Sql);
rs = null;
}
return rs;
}

public Vector QueryVet(String Sql) {
Vector vet = null;
try {
stmt = dbcon.createStatement();
rs = stmt.executeQuery(Sql);//以前调用这个函数的时候会
ResultSetMetaData meta = rs.getMetaData();
while (rs.next()) {
Hashtable hash = new Hashtable();
for (int i = 0; i < meta.getColumnCount(); i++) {
hash.put(meta.getColumnName(i + 1).toLowerCase(), rs
.getString(i + 1) == null ? "" : rs
.getString(i + 1));
}
vet.add(hash);

}
} catch (Exception e) {
System.out.print("VET异常!");
}
return vet;
}
}


但是我用这个代码也完成过一些简单的工程啊?
到底是什么原因?希望大家帮帮忙。

不知道怎么发图,要是哪边我表述不清楚的告诉我一下!
真的谢谢了
...全文
117 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
anyuelang 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Landor2004 的回复:]
TimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
[/Quote]
哇哈哈哈,偶很尴尬...原来大小写不能随心所欲的啊~
成功了~

谢谢,
也谢谢热心帮助的各位~~~
Landor2004 2008-11-10
  • 打赏
  • 举报
回复
TimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
anyuelang 2008-11-10
  • 打赏
  • 举报
回复
请各位看看是不是我上面代码中 日期格式设置的有问题?
为什么有时候能存进去,有时候又不能?
要是看的模糊告诉我~我挺想搞明白的~~~
anyuelang 2008-11-10
  • 打赏
  • 举报
回复
insert into words(WordsTitle,WordsContent,WordsTime,UserID)values('啊','阿萨','2008-24-10 10:24:50','1')exeSql error!com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '2008-24-10 10:24:50' for column 'WordsTime' at row 1

呵呵 我真的笨死了,异常打出来我也看懂了,说时间格式不对....
这样,我再把时间设置的类发一下
public class Cwords {
String Sql = "";

String WordsTitle = "";

String WordsContent = "";

String WordsTime;

int ID = 0;

int UserID = 0;

Access_db ac;

SimpleDateFormat TimeFormat;
//下面就是设置时间格式,是不是这里设置错了
public Cwords() {
TimeFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
WordsTime = TimeFormat.format(new java.util.Date());
ac = Access_db.getInstance();
}

public boolean add_words() {
Sql = "insert into words(WordsTitle,WordsContent,WordsTime,UserID)values('"
+ WordsTitle
+ "','"
+ WordsContent
+ "','"
+ WordsTime
+ "','"
+ UserID + "')";
System.out.print(Sql);
boolean is_add = ac.exeSql(Sql);
return is_add;
}}


我用的数据库是mysql, WordsTime这一字段用的是date日期型。


另外我觉得2楼说的也有道理,我一直用的是单实例传递,每一次调用这个类都是这样建一个对象引用实例:
Cwords cw=new Cwords();
CWords类构造函数里调用了第一个类ac = Access_db.getInstance();
没有用javaBean,是不是用javabean,再按2楼的方法就OK?
我现在去试验一下~~
Landor2004 2008-11-10
  • 打赏
  • 举报
回复
异常贴上来,瞧瞧,看代码太费劲
ZHANGBINFLY 2008-11-10
  • 打赏
  • 举报
回复
public boolean exeSql(String Sql) {

在哪里调用,没有发现啊
若鱼1919 2008-11-10
  • 打赏
  • 举报
回复
由static Access_db ac_db 可知所有的Access_db对象实例共享一个ac_db,
在一个页面上调用Access_db db=Access_db.getInstance();的时候,如果其他的页面也有调用,那么
public static Access_db getInstance() {
try {
ac_db = new Access_db();
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.print("连接出错!");
} catch (SQLException e) {
e.printStackTrace();
System.out.print("连接第二步出错!");
}
return ac_db;
}
可有一个的已经返回的ac_db被另外一个重新赋值,这个过程中可能就会出错。

如果你是用javaBean的话,那么你完全可以:
把static Access_db ac_db = null去掉,
然后把 public static Access_db getInstance() 方法也去掉。


老紫竹 2008-11-10
  • 打赏
  • 举报
回复
我想看你的异常,真可惜,你把最重要的东西给忘了!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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