首先声明: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 没有尝试过)!
分享到:
相关推荐
标题 "Hibernate 连接 SQL Server 2000" 涉及到的是在Java开发中使用Hibernate ORM框架与较旧版本的SQL Server数据库(即SQL Server 2000)进行交互的知识点。以下是对这个主题的详细阐述: Hibernate是Java领域中...
SQL Server 2000不支持像后来版本的`OFFSET`和`FETCH NEXT`分页语法,但可以通过其他方式实现。常用的方法是使用`ROW_NUMBER()`函数配合子查询或`TOP`关键字。例如: ```sql SELECT * FROM ( SELECT ROW_...
当使用Hibernate连接Microsoft SQL Server数据库时,需要特定的JDBC驱动来建立连接。这些驱动通常是以jar包的形式提供的,包括`msbase.jar`、`mssqlserver.jar`和`msutil.jar`。 1. **msbase.jar**:这是Microsoft ...
**hibernate3连接sql server的例子** 在Java开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以用Java对象来操作数据库,而无需直接编写SQL语句。本例将详细介绍如何...
博文链接:https://xuehongliang.iteye.com/blog/66057
使用hibernate 连接 SqlServer2003
本项目"SpringBoot+Hibernate+MySQL+SQLServer双数据源"正为此目的设计,它利用SpringBoot的灵活性和便利性,结合Hibernate的ORM能力,实现了对MySQL和SQLServer两种主流数据库的支持,为数据迁移、读写分离、高可用...
### Hibernate + c3p0 连接池与 SQL Server 2000 的配置与问题解决 #### 一、背景介绍 在Java开发环境中,Hibernate作为一款流行的ORM框架,能够提供一套强大的对象-关系映射机制,使得开发者可以更加便捷地进行...
在这个场景中,我们将探讨如何使用Hibernate与SQL Server 2005数据库进行基本的CRUD(Create、Read、Update、Delete)操作。 首先,我们需要确保引入了Hibernate的依赖库。从描述中的“Hibernate 所需要的 jar 包”...
标题和描述中提到的"绩效考核 struts2+hibernate+sqlserver2000"是一个基于Java技术栈的企业级应用开发实例,主要用于实现绩效考核的管理功能。这个项目采用了Struts2作为MVC框架,Hibernate作为持久层 ORM 工具,...
**使用Hibernate访问SQL Server数据库** Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库和面向对象编程之间架起桥梁的方式。通过使用Hibernate,我们可以避免编写大量的SQL...
JTDS是一个开放源代码的100%纯Java的,用于JDBC 3.0驱动Microsoft SQL Server (6.5 ,7 ,2000和2005版本)驱动程序。在hibernate连接sqlserver数据库时最好用这个。。
**Struts、Hibernate和SQL Server 2005 分页小项目详解** 在软件开发中,尤其是Web应用,数据分页是一项重要的功能,它能够帮助用户有效地浏览大量数据,提高用户体验。本项目以"Struts+Hibernate+SQL Server 2005...
基于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 ...
Struts 1.1、Hibernate 3.0 和 SQL Server 2005 数据库驱动包是构建基于Java的企业级Web应用程序的关键组件。这些技术在2000年代中期广泛应用于开发面向服务架构(SOA)和模型视图控制器(MVC)模式的系统。 Struts...