首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

求救!小弟我用DAO设计模式连接数据库,可是如何搞数据也不能插进去.也不提示任何异常

2012-01-30 
求救!!!我用DAO设计模式连接数据库,可是怎么搞数据也不能插进去.也不提示任何错误.我都试了好几天了,也用

求救!!!我用DAO设计模式连接数据库,可是怎么搞数据也不能插进去.也不提示任何错误.
我都试了好几天了,也用了不同的的机子,可是就是不提示任何错误,就是数据插入不了.请问大家这到底是怎么回事啊..我用的是mysql数据库下面我把我的代码写下来,谁帮我看看到底是哪里出了问题?我了简单点了,我就把实现一个插入的数据写下来?
一共是4个文件,加一个jsp文件
第一文件Person.java:         //实现存储

package   org.zgl.vo;

public   class   Person
{
private   String   id;
private   String   name;
private   String   password;
private   int   age;
private   String   email;
public   void   setId(String   id)
{
this.id   =   id;
}
public   void   setName(String   name)
{
this.name   =   name;
}
public   void   setPassword(String   password)
{
this.password   =   password   ;
}
public   void   setAge(int   age)
{
this.age   =   age   ;
}
public   void   setEmail(String   email)
{
this.email   =   email   ;
}
public   String   getId()
{
return   this.id   ;
}
public   String   getName()
{
return   this.name   ;
}
public   String   getPassword()
{
return   this.password   ;
}
public   int   getAge()
{
return   this.age   ;
}
public   String   getEmail()
{
return   this.email   ;
}

}

第二个文件   PersonDAO.java:     //这类是个接口
package   org.zgl.dao;

import   org.zgl.vo.*;     //这个是我打的那个包
import   java.util.*;

public   interface   PersonDAO  
{
public   void   insert(Person   person)   throws   Exception   ;
}
第二个文件PersonDAOImpl.java   //这个是实现上面那个接口的
package   org.zgl.dao.impl   ;

import   java.util.*   ;
import   java.sql.*   ;
import   org.zgl.vo.*   ;
import   org.zgl.dao.*   ;  
import   org.zgl.database.*   ;

public   class   PersonDAOImpl   implements   PersonDAO
{
public   void   insert(Person   person)   throws   Exception  
{
DataBaseConnection   dbc   =   null   ;
PreparedStatement   pstmt   =   null   ;
String   sql   =   "insert   into   person(id,name,password,age,email)   values(?,?,?,?,?) "   ;
try
{
dbc   =   new   DataBaseConnection()   ;
pstmt   =   dbc.getConnection().prepareStatement(sql)   ;
pstmt.setString(1,person.getId())   ;
pstmt.setString(2,person.getName())   ;  
pstmt.setString(3,person.getPassword())   ;
pstmt.setInt(4,person.getAge())   ;
pstmt.setString(5,person.getEmail())   ;
pstmt.executeUpdate();
pstmt.close();
dbc.close();
}
catch   (Exception   e)
{
}
}
}
第四个文件:DataBaseConnection.java   //此文件是连接数据库的类
package   org.zgl.database;

import   java.sql.*   ;

public   class   DataBaseConnection
{
final   String   DBDRIVER   =   "org.gjt.mm.mysql.Driver "   ;
final   String   DBURL   =   "jdbc:mysql://localhost/person "   ;
final   String   DBUSER   =   "root "   ;


final   String   DBPASSWORD     =   "wuxian "   ;
Connection   conn   =     null   ;
public   DataBaseConnection()
{
try
{
Class.forName(DBDRIVER);
conn   =   DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
}
catch   (Exception   e)
{
}
}
public   Connection   getConnection()
{
return   this.conn   ;
}
public   void   close()
{
try
{
conn.close()   ;
}
catch   (Exception   e)
{
}

}
}

最后一个jsp文件调用
<%@   page   contentType= "text/html;charset=gb2312 "%>
<%@   page   import= "org.zgl.vo.Person "%>
<%@   page   import= "org.zgl.dao.PersonDAO "%>
<%@   page   import= "org.zgl.dao.impl.PersonDAOImpl "%>
<%
PersonDAO   dao   =   new     PersonDAOImpl()   ;
Person   person   =   new   Person()   ;
person.setId( "1 ");
person.setName( "mark ");
person.setPassword( "mark ");
person.setAge(20);
person.setEmail( "bbs@bbs.com ");
dao.insert(person);

%>

补充一下:应该不是语法的错误,因为我编译和连接都没有出问题,我估计是逻辑上的问题.请哪位老手帮我指引指引.




[解决办法]
catch (Exception e)
{

e.printStackTree();---------> 你都没有打印出来,当然没看到报错啊!!!!
}
好几个地方都改一下就可以看到错误了!!!
[解决办法]
加log 跟踪下。
或者把sql直接拿去数据库执行 看看是不是语句或者数据库没有弄好
[解决办法]
看不出有什么地方不对的,你需要在所有的 catch 中加上 1 楼所说(不过语句错了)的 e.printStackTrace(); 可以输出异常信息,这样才能调试的,否则根本看出不什么东西。
[解决办法]
你把异常原因打印出来,看看到底是为什么得到的conn是null,是密码错误还是url错误等等~一般在异常中都会有说明的
[解决办法]
有些不为null的字段没有赋值吧
[解决办法]
不知道楼主解决了没有,不过我看异常捕获后没有输出错误信息,这样应该不是个好习惯。既然捕获了异常,总得干点而什么。。。
[解决办法]
我今天也遇到这样的问题
不过我的数据库是MS SQL 2000
还好,论坛里面有个兄弟给了个建议,修改了一下表,
最后错误是因为没有把表标识设为自增
设过就可以了

[解决办法]
当成功那一刻才知道什么是开心?

恭喜!
[解决办法]
猜测由于你的mysql连接端口没有指定
jdbc:mysql://localhost:3306/person

热点排行