一、JDBC连接SQLserver数据库的步骤:

  1.下载SQLserver的JDBC驱动文件——Microsoft JDBC Driver 4.0 for SQL Server

  2.例如下载得到的文件是sqljdbc_4.0.2206.100_chs.exe,解压文件,将解压缩文件中的sqljdbc4.jar放到eclipse-workspace\User_Message(新建的JavaWeb项目)\WebContent\WEB-INF\lib目录下

  3.加载JDBC驱动程序:在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String  className)实现,成功加载后,会将Driver类的实例注册到DriverManager类中

  示例语句:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

  4.创建连接对象:要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象, 该对象就代表一个数据库的连接,使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码,其中url定义了连接数据库时的协议、子协议、数据源标识,协议——在JDBC中总是以jdbc开始,子协议——是桥连接的驱动程序或是数据库管理系统名称,数据源标识——标记找到数据库来源的地址与连接端口。

  示例语句:

String user="sa";

String password="woshizcy0919";

String url=
"jdbc:sqlserver://127.0.0.1:1433;DatabaseName=User_DB"; Connection connection=DriverManager.getConnection(url, user, password);

  5.准备SQL语句:

  示例语句:

String sql="select count(*) from t_user where username=?";

  6.执行SQL语句:先将SQL语句赋给preparedStatement对象,下面有两种执行SQL语句的方法executeQuery 、executeUpdate

          (1)ResultSet executeQuery():执行查询数据库的SQL语句,返回值为一个结果集(ResultSet)对象。

            (2)int executeUpdate():执行INSERT、UPDATE或DELETE语句以及SQL DDL语句(如:CREATE TABLE和DROP TABLE等),并更新数据库,返回值为本次操作影响的行数,即记录数。

  示例语句:

PreparedStatement preparedStatement=

connection.prepareStatement(sql);

preparedStatement.setString(1, user.getUsername());
resultSet=preparedStatement.executeQuery();

preparedStatement.executeUpdate();

  7.操作结果集对象:

  结果集中包含符合SQL语句查询条件的所有行,即所有记录,并且它通过一套get方法提供了对这些行中数据的访问,使用结果集对象(resultSet)的访问方法获取数据。

  (1)resultSet.next():读取结果集中的下一行,即下一条记录。

  (2)resultSet.getInt(int index)

      resultSet.getInt(String columName):

      通过索引或者列名来获得查询结果集中的某一列的值。

  示例语句:

//例:现有表User:列有id,name

String sql="select * from User";

ResultSet resultSet = null; 

resultSet = preparedStatement.executeQuery(sql);

while(resultSet.next)

{

resultSet.getInt(1)//等价于resultSet.getInt("id");

resultSet.getString(2)//等价于resultSet.getInt("name");

}

  8.关闭JDBC对象:

  示例语句:

DBUtil.close(resultSet);

DBUtil.close(preparedStatement);

DBUtil.close(connection);

二、登录界面及其功能设计

1.对数据库操作方法的接口

package com.jaovo.msg.dao;

import java.util.List;

import com.jaovo.msg.model.User;

public interface IUserDao
{
public void add(User user); public void delete(int id); public void update(User user); public User load(int id); public User load(String username); public List<User> load();
}

2.实现接口的类

package com.jaovo.msg.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; import com.jaovo.msg.Util.DBUtil;
import com.jaovo.msg.Util.UserException;
import com.jaovo.msg.model.User; public class UserDaoImpl implements IUserDao
{
public void add(User user)
{
//获得连接的对象
Connection connection=DBUtil.getConnection();
//准备sql语句
String sql="select count(*) from t_user where username=?";
//创建语句传输对象
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try
{
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1, user.getUsername());
//接收结果集
resultSet=preparedStatement.executeQuery();
//遍历结果集
while(resultSet.next())
{
if(resultSet.getInt(1)>0)
{
throw new UserException("用户已存在!");
}
}
sql="insert into t_user(username,nickname,password) values(?,?,?)";
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1, user.getUsername());
preparedStatement.setString(2, user.getNickname());
preparedStatement.setString(3, user.getPassword());
preparedStatement.executeUpdate();
//重写底层代码:
/*
sql="insert into t_user(id,username,userpassword,nickname)values('"+user.getId()+"','"+user.getUsername()+"','"+user.getPassword()+"','"+user.getNickname()+"')";
Statement stmt;
Connection con=DBUtil.getConnection();
stmt=con.createStatement();
stmt.executeUpdate(sql);
*/
//重写结束
}
catch (SQLException e)
{
e.printStackTrace();
}
finally
{
//关闭JDBC对象
DBUtil.close(resultSet);
DBUtil.close(preparedStatement);
DBUtil.close(connection);
}
} public void delete(int id)
{
//获得连接的对象
Connection connection=DBUtil.getConnection();
//准备sql语句
String sql="delete from t_user where id=?";
//创建语句传输对象
PreparedStatement preparedStatement=null;
try
{ preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
preparedStatement.executeUpdate(); }
catch(SQLException e)
{
e.printStackTrace(); }
finally
{
DBUtil.close(preparedStatement);
DBUtil.close(connection);
}
} public void update(User user)
{
//获得连接的对象
Connection connection=DBUtil.getConnection();
//准备sql语句
String sql="delete from t_user where id=?";
//创建语句传输对象
PreparedStatement preparedStatement=null;
try
{
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1, user.getUsername());
preparedStatement.setString(2, user.getNickname());
preparedStatement.setInt(3, user.getId());
preparedStatement.executeUpdate();
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
DBUtil.close(preparedStatement);
DBUtil.close(connection);
}
} public User load(int id)
{
//获得连接的对象
Connection connection=DBUtil.getConnection();
//准备sql语句
String sql="select * from t_user where id=?";
//创建语句传输对象
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
User user=null;
try
{
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1, id);
resultSet=preparedStatement.executeQuery();
while(resultSet.next())
{
user=new User();
user.setId(id);
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
user.setNickname(resultSet.getString("nickname"));
}
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
DBUtil.close(resultSet);
DBUtil.close(preparedStatement);
DBUtil.close(connection);
}
return user;
} public User load(String username)
{
//获得连接的对象
Connection connection=DBUtil.getConnection();
//准备sql语句
String sql="select * from t_user where username=?";
//创建语句传输对象
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
User user=null;
try
{
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1, username);
resultSet=preparedStatement.executeQuery();
while(resultSet.next())
{
user=new User();
user.setId(resultSet.getInt("id"));
user.setUsername(username);
user.setPassword(resultSet.getString("password"));
user.setNickname(resultSet.getString("nickname"));
}
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
DBUtil.close(resultSet);
DBUtil.close(preparedStatement);
DBUtil.close(connection);
}
return user;
} public List<User> load()
{
//获得连接的对象
Connection connection=DBUtil.getConnection();
//准备sql语句
String sql="delete from t_user where id=?";
//创建语句传输对象
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
List<User> users=new ArrayList<User>();
User user=null;
try
{
preparedStatement=connection.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();
while(resultSet.next())
{
user=new User();
user.setId(resultSet.getInt("id"));
user.setUsername(resultSet.getString("username"));
user.setNickname(resultSet.getString("nickname"));
user.setPassword(resultSet.getString("password"));
users.add(user);
} }
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
DBUtil.close(resultSet);
DBUtil.close(preparedStatement);
DBUtil.close(connection);
}
return users;
}
//检查密码是不是错误
public boolean check(User user)
{
boolean flag=false;
Connection connection=DBUtil.getConnection();
String sql="select * from t_user where username=?";
PreparedStatement preparedStatement = null;
ResultSet resultSet=null;
try
{
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1,user.getUsername());
resultSet=preparedStatement.executeQuery();
while(resultSet.next())
{
if(resultSet.getString("password").equals(user.getPassword().toString().trim()))
{
flag=true;
break;
}
}
}
catch (SQLException e)
{
e.printStackTrace();
}
return flag;
}
}

3.用户模型类

package com.jaovo.msg.model;

public class User
{
private int id;
private String username;
private String nickname;
private String password;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getNickname()
{
return nickname;
}
public void setNickname(String nickname)
{
this.nickname = nickname;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
}

4.工具类(用于连接数据库和关闭JDBC对象)

package com.jaovo.msg.Util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class DBUtil
{
public static Connection getConnection()
{
try
{
//加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
System.out.println("驱动加载成功!");
}
catch(ClassNotFoundException | InstantiationException | IllegalAccessException e)
{
System.out.println("驱动加载失败!");
e.printStackTrace();
}
String user="sa";
String password="woshizcy0919";
String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=User_DB";
Connection connection=null;
try
{
//创建链接对象connection
connection=DriverManager.getConnection(url, user, password);
System.out.println("数据库连接成功!");
}
catch(SQLException e)
{
System.out.println("数据库连接失败!");
e.printStackTrace();
}
return connection;
} //关闭资源的方法
public static void close(Connection connection)
{
if(connection!=null)
{
try
{
connection.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
} public static void close(PreparedStatement preparedStatement)
{ if(preparedStatement !=null)
{
try
{
preparedStatement.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
} public static void close(ResultSet resultSet)
{
if(resultSet!=null)
{
try
{
resultSet.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
}

5.异常抛出类

package com.jaovo.msg.Util;

public class UserException extends RuntimeException
{
public UserException()
{
super();
} public UserException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace)
{
super(message, cause, enableSuppression, writableStackTrace);
} public UserException(String message, Throwable cause)
{
super(message, cause);
} public UserException(String message)
{
super(message);
} public UserException(Throwable cause)
{
super(cause);
}
}

6.jsp界面代码

(1)登录界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>欢迎来到登录界面</title>
</head>
<body>
<%=request.getAttribute("error") %>
<form action="LoginCheck.jsp" method="post">
<table align="center" border="1" width="500">
<caption>用户登录</caption>
<tr>
<td>账号:</td>
<td>
<input type="text" name="username"/>
</td>
</tr>
<tr>
<td>密码:</td>
<td>
<input type="password" name="password">
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="登录"/>
<input type="button" value="注册" onClick="window.location.href='addInput.jsp'"/>
</td>
</tr>
</table>
</form>
</body>
</html>

(2)登录验证界面

<%@page import="com.jaovo.msg.Util.UserException"%>
<%@page import="com.jaovo.msg.dao.UserDaoImpl"%>
<%@page import="com.jaovo.msg.model.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>用户身份验证</title>
</head>
<body>
<%
//接收客户端传递过来的参数
String username = request.getParameter("username");
String password = request.getParameter("password");
if(username == null || "".equals(username.trim())||password == null || "".equals(password.trim()))
{
request.setAttribute("error", "用户名和密码不能为空!");
%>
<jsp:forward page="Login.jsp"></jsp:forward>
<%
}
%>
<%
User user = new User();
user.setUsername(username);
user.setPassword(password);
UserDaoImpl userDao = new UserDaoImpl();
try
{
if(userDao.load(username)==null)
{
throw new UserException();
}
if(userDao.check(user)==true)
{
%>
登录成功!<br>
<%
}
else
{
%>
密码输入错误!<br>
<%
}
}
catch(UserException e)
{
%>
<h2 style="color:red ; font-size:50px">该用户名不存在</h2>
<%
}
%>
</body>
</html>

(3)用户注册界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>用户添加页面</title>
</head>
<body>
<form action="add.jsp" method="get">
<table align="center" border="1" width="500">
<tr>
<td>用户名称 : </td>
<td>
<input type="text" name="username" />
</td>
</tr>
<tr>
<td>用户密码:</td>
<td>
<input type="password" name="password" />
</td>
</tr>
<tr>
<td>用户昵称:</td>
<td>
<input type="text" name="nickname" />
</td>
</tr>
<%=request.getAttribute("error") %>
<tr align="center">
<td colspan="2">
<input type="submit" value="提交" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form>
</body>
</html>

(4)注册结果界面

<%@page import="com.jaovo.msg.Util.UserException"%>
<%@page import="com.jaovo.msg.dao.UserDaoImpl"%>
<%@page import="com.jaovo.msg.model.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>用户添加页面</title>
</head>
<body>
<%
//接收客户端传递过来的参数
String username = request.getParameter("username");
String password = request.getParameter("password");
String nickname = request.getParameter("nickname");
if(username == null || "".equals(username.trim())||password == null || "".equals(password.trim())){
request.setAttribute("error", "用户名和密码不能为空!");
%>
<jsp:forward page="addInput.jsp"></jsp:forward>
<%
}
%>
<%
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setNickname(nickname); UserDaoImpl userDao = new UserDaoImpl();
try{
userDao.add(user);
%>
注册成功!<br>
<a href="addInput.jsp">返回</a><br>
<a href="#">用户列表</a>
<%
}catch(UserException e){
%>
<h2 style="color:red ; font-size:50px">发生错误 : <%=e.getMessage() %></h2>
<%
}
%>
</body>
</html>

7.运行结果界面截图:

(1)登录界面

(2)登录成功

(3)用户名或密码为空

(4)用户名不存在

(5)密码错误

(6)注册界面

(7)注册成功

(8)注册重复

JavaWeb连接SQLServer数据库并完成一个登录界面及其功能设计。的更多相关文章

  1. jsp连接sqlServer数据库教程

    一.首先讲下我用的工具版本以供参考: jar包:jtds1.3.1.jar  下载地址:点击进入 数据库:SQL Server2012 服务器:Tomcat8.0   下载地址:点击进入 开发IDE工 ...

  2. jsp-3 简单的servlet连接mysql数据库 使用mvc的登录注册

    简单的servlet连接mysql数据库 使用mvc的登录注册 commons-dbutils-1.6 mysql-connector-java-5.1.40-bin c3p0-0.9.5.2 mch ...

  3. JavaWeb程序连接SQLserver数据库

    声明:一直以来都以为javaweb程序连接数据库是一个很高大上很难的问题,结果今天学习了一下,不到两个小时就解决了,所以总结一篇博客. JavaWeb程序连接SQLserver数据库分为一下步骤: 1 ...

  4. jsp连接sqlServer数据库教程、jsp连接sqlServer数据库报ClassNotFoundException异常

    jsp连接sqlServer数据库教程: 首先讲下我用的工具版本以供参考: jar包:jtds1.3.1.jar  下载地址:点击进入 数据库:SQL Server2012 服务器:Tomcat8.0 ...

  5. JavaWeb连接MySQL数据库

    JavaWeb连接MySQL数据库 JavaWeb连接MySQL数据库的方式有很多,首先我们讲解JDBC的配置方法 一.JDBC的配置方法 1.什么是JDBC 什么是JDBC嘞?JDBC代表Java数 ...

  6. asp.net 连接sqlserver数据库

    在asp.net中连接sqlserver数据库之前,首先得确保正常安装了sqlserver2008,同时有数据库. 在项目中添加一个类DB,用来专门负责执行对数据库的增删改查.在添加的过程中会弹出下面 ...

  7. SQLServer-----使用jTDS连接SQLServer数据库

    一.jTDS一个简短的引论 jTDS100%纯Java实现的JDBC3.0驱动,它用于连接 Microsoft SQL Server(6.5.7.2000,2005,2008 和 2012)和Syba ...

  8. python连接sqlserver数据库

    1.准备工作 python3.6连接sqlserver数据库需要引入pymssql模块 pymssql官方:https://pypi.org/project/pymssql/ 没有安装的话需要: pi ...

  9. php支持连接sqlserver数据库

    php支持连接sqlserver数据库 1.软件配置 Win7 64 +wampserver2.2d-x32+SQL Server 2008 R2数据库,wamp2.2中的php版本是5.3.10. ...

随机推荐

  1. win10同时安装 office2016和visio2016

    一.下载镜像文件 因为office 2016和 visio2016 镜像文件是一样的,只是名称不一样,所以只需要下载一个即可. 二.下载Office 2016 Deployment Tool工具 到微 ...

  2. Servlet(六):连接数据库,完整的CRUD

    Servlet的知识点大致讲完了,今天补充下与之相关的一些小知识,然后做一个完整的小例子. 一.MVC设计模式 1.MVC设计模式是什么? 在了解MVC之前,先聊聊Model1.Model2开发模式. ...

  3. FCM算法的matlab程序(初步)

    FCM算法的matlab程序 在https://www.cnblogs.com/kailugaji/p/9648430.html文章中已经介绍了FCM算法,现在用matlab程序实现它. 作者:凯鲁嘎 ...

  4. Spring容器技术内幕之BeanWrapper类介绍

    引言 org.springframework.beans.BeanWrapper是Spring框架中重要的组件类.BeanWrapper相当于一个代理器,Spring委托BeanWrapperwanc ...

  5. python3编写网络爬虫21-scrapy框架的使用

    一.scrapy框架的使用 前面我们讲了pyspider 它可以快速的完成爬虫的编写 不过pyspider也有一些缺点 例如可配置化不高 异常处理能力有限对于一些反爬虫程度非常强的网站 爬取显得力不从 ...

  6. 【夯实PHP基础】PHP多进程-- pcntl_fork实现

    本文地址 参考文档 分享提纲: 1. 概述 2.安装(只支持Linux) 3. 代码实验多进程pcntl_fork 4. 具体解释 1. 概述 PHP有个pcntl_fork的函数可以实现多进程,但要 ...

  7. 《Java大学教程》—第7章 类的实现

    统一建模语言(UML)用方框代表类.方框被分成3部分,第一部分是类名,第二部分是类的属性,第三部分是类的方法.类的属性(属性名称:属性类型):类的方法(方法名称(参数类型):返回值类型).静态的类的属 ...

  8. 【Teradata System】How Teradata uses MPP Systems

    内存分配 内存初始化时将分配给操作系统和Vprocs,内存不使用部分的90%做为FSG (File Segment Cache) ,由PDE对FSG进行管理. FSG Cache:缓存常驻内存的dat ...

  9. 【大数据技术】操作系统和Hadoop版本选择

    1.操作系统选择 Hadoop产品是由Java语言开发的,所以推荐的是Linux操作系统,理由很简单开源免费,推荐的操作系统CentOS. CentOS是一个基于Red Hat 企业级 Linux 提 ...

  10. c# 反射 去掉对象中字符串属性多余空格