首先声明:Hibernate生成数据库表式成功的,也就是说生成数据表是没问题的(驱动包等没有任何问题)
但是就是插入不了数据
DAO类代码:
package com.hgp.dao;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import com.hgp.model.User;
import com.hgp.util.HibernateUtil;
public class UserDao {
/**
* 保存用户
* @param user User对象
*/
public void saveUser(User user){
Session session = null; //Session对象
try {
//获取Session
session = com.hgp.util.HibernateUtil.getSession();
session.beginTransaction(); //开启事物
session.save(user); //持久化user
session.getTransaction().commit(); //提交事物
} catch (Exception e) {
e.printStackTrace(); //打印异常信息
session.getTransaction().rollback();//回滚事物
}finally{
HibernateUtil.closeSession(); //关闭Session
}
}
/**
* 查询所有用户信息
* @return List集合
*/
public List<User> findAllUser(){
Session session = null; //Session对象
List<User> list = null; //List集合
try {
//获取Session
session = HibernateUtil.getSession();
session.beginTransaction(); //开启事物
String hql = "from User";
list = session.createQuery(hql) //创建Query对象
.list(); //获取结果集
session.getTransaction().commit(); //提交事物
} catch (Exception e) {
e.printStackTrace(); //打印异常信息
session.getTransaction().rollback();//回滚事物
}finally{
HibernateUtil.closeSession(); //关闭Session
}
return list;
}
/**
* 通过用户名和密码查询用户
* 用于登录
* @param username 用户名
* @param password 密码
* @return User对象
*/
public User findUser(String username, String password){
Session session = null; //Session对象
User user = null; //用户
try {
//获取Session
session = HibernateUtil.getSession();
session.beginTransaction(); //开启事物
//HQL查询语句
String hql = "from User u where u.username=? and u.password=?";
Query query = session.createQuery(hql) //创建Query对象
.setParameter(0, username)//动态赋值
.setParameter(1, password);//动态赋值
user = (User)query.uniqueResult(); //返回User对象
session.getTransaction().commit(); //提交事物
} catch (Exception e) {
e.printStackTrace(); //打印异常信息
session.getTransaction().rollback();//回滚事物
}finally{
HibernateUtil.closeSession(); //关闭Session
}
return user;
}
/**
* 判断指定用户名的用户是否存在
* @param username 用户名
* @return
*/
public boolean findUserByName(String username){
Session session = null; //Session对象
boolean exist = false;
try {
//获取Session
session = HibernateUtil.getSession();
session.beginTransaction(); //开启事物
//HQL查询语句
String hql = "from User u where u.username=?";
Query query = session.createQuery(hql) //创建Query对象
.setParameter(0, username);//动态赋值
Object user = query.uniqueResult(); //返回User对象
//如果用户存在exist为true
if(user != null){
exist = true;
}
session.getTransaction().commit(); //提交事物
} catch (Exception e) {
e.printStackTrace(); //打印异常信息
session.getTransaction().rollback();//回滚事物
}finally{
HibernateUtil.closeSession(); //关闭Session
}
return exist;
}
}
Servlet类代码:
package com.hgp.service;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.hgp.dao.UserDao;
import com.hgp.model.Administrator;
import com.hgp.model.Guest;
import com.hgp.model.User;
/**
* 用户操作Servlet类
* 通过doPost()方法进行处理
* @author Li Yong Qiang
*/
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1380736560965055473L;
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//请求参数
String method = request.getParameter("method");
if(method != null){
//用户注册
if("guestReg".equalsIgnoreCase(method)){
//用户名
String username = request.getParameter("username");
//密码
String password = request.getParameter("password");
//电子邮箱
String email = request.getParameter("email");
//创建UserDao
UserDao dao = new UserDao();
//判断用户名是否为null或空的字符串
if(username != null && !username.isEmpty()){
//判断用户名是否存在
if(dao.findUserByName(username)){
//如果用户名已存在,进行行错误处理
request.setAttribute("error", "您注册的用户名已存在!");
System.out.println("您注册的用户名已存在!");
request.getRequestDispatcher("error.jsp").forward(request, response);
}else{
//实例化一个User对象
User user = new Guest();
//对user中的属性赋值
user.setUsername(username);
user.setPassword(password);
user.setEmail(email);
//保存user
dao.saveUser(user);
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
}
//用户登录
else if("userLogin".equalsIgnoreCase(method)){
String username = request.getParameter("username");
String password = request.getParameter("password");
//实例化UserDao
UserDao dao = new UserDao();
//根据用户名、密码查询User
User user = dao.findUser(username, password);
//判断用户是否登录成功
if(user != null){
//判断user是否是管理员对象
if(user instanceof Administrator){
//将管理员对象放入到session中
request.getSession().setAttribute("admin", user);
}
//将用户对象放入到session中
request.getSession().setAttribute("user", user);
request.getRequestDispatcher("index.jsp").forward(request, response);
}else{
//登录失败
request.setAttribute("error", "用户名或密码错误 !");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
}
//退出登录
else if("exit".equalsIgnoreCase(method)){
request.getSession().removeAttribute("user");
if(request.getSession().getAttribute("admin") != null){
request.getSession().removeAttribute("admin");
}
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}else{
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
}
以上代码:
修改方法是:
在session.save(user);后面加上
session.flush();
这样就解决问题了,原因是没有提交成功!
注意:连接SQLserver 2000 的时候,表明不要取成user ,这样的表在SQLServer 2000 里面是没法生成的(SQL2005 和2008 没有尝试过)!
分享到:
相关推荐
NULL 博文链接:https://hw1287789687.iteye.com/blog/2111965
不错的分页(Hibernate+sqlserver2000分页)值得大家一看。
博文链接:https://xuehongliang.iteye.com/blog/66057
hibernate3连接sql server的例子,可以看看,这个例子测试运行过
hibernate 连接 sql server 所需的jar包 msbase.jar msutil.jar mssqlserver.jar
使用hibernate 连接 SqlServer2003
使用hibernate对sqlserver 2005进行增删改查
Hibernate+c3p0连接池SQLServer 2000,解决连接出错的问题
JTDS是一个开放源代码的100%纯Java的,用于JDBC 3.0驱动Microsoft SQL Server (6.5 ,7 ,2000和2005版本)驱动程序。在hibernate连接sqlserver数据库时最好用这个。。
基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) 基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) 基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) ...
基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于...
如果你使用原sql2000驱动及配置,新增、编辑记录都没有问题,查询第一页数据也正常,但翻页却莫名报错:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。 通过实战总结,希望能给各位带来帮助。 包含jdbc ...
绩效考核 struts2+hibernate+sqlserver2000
一个基于Hibernate 和 SQLServer 数据库的分页示例,所有文件和数据库备份都在,只是速度不怎么快,如果加上自动生成下拉框,速度就更慢了,单表、10008条测试数据,如果哪位大侠改进了查询速度望告之:vni2007@163....
最容易入门的hibernate操作sqlServer数据库例子
使用Hibernate访问数据库,demo中数据库使用的是sqlserver
Struts 1.1、Hibernate 3.0和SQL Server 2005数据库驱动包