上一篇文章《通过JDBC/ODBC方法连接SQL Servers与MyEclipe(SQL)》介绍了 如何通过JDBC/ODBC方法实现MyEclipe和SQL Server连接,但是因为这种方法效率较低而且现在sun公司已经不支持了,我们会在花一个篇幅的时间介绍微软的JDBC,实现MyEclipe和SQL Server之间的连接。
1. JDBC Driver安装
因为我用的是SQL2012 所以选择的版本是 Microsoft JDBC Driver 4.0 for SQL Server,可以到 微软官方下载 或者 其他下载 获取软件~
下载之后解压,可以得到sqljdbc4.jar包,将sqljdbc4.jar 放到D盘目录下 D:\Program Files\JDBC\sqljdbc4\sqljdbc4.jar
2. 修改系统变量
右键 我的电脑 -> 属性 -> 高级系统设置(高级) -> 环境变量, 编辑 “CLASSPATH"系统变量,在最后追加步骤一中的地址 (;D:\Program Files\JDBC\sqljdbc4\sqljdbc4.jar 注意用英文分号)
3. 将 sqljdbc4.jar 放到如下几个地方
a. C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext
b. C:\Program Files\Java\jre1.8.0_51\lib\ext
c. D:\soft\apache-tomcat-8.0.21-windows-x86\lib
a.和 b. 取决于你安装 JDK 的路径, c. 是按照你 tomcat 的安装路径来的~
接下来我们配置 SQL Server
4. 修改为 SQL Server 身份验证,具体参考 http://jingyan.baidu.com/article/380abd0aa8f2311d90192cd0.html
这个时候我将用户名设置为 sa , 密码是 saberhao123,记住咯 ,下面我们还会用到!~
5. 配置 Sql server 网络配置协议
运行 开始 → 所有程序 → Microsoft SQL Server 2012 → 配置工具 →SQL Server配置管理器,如下图
我们可以看到你自己建立的数据库的相关协议,我的就是 “SABERHAO的协议”,我们需要对我们的数据库做如下修改
a. 右键 Named Pipes 启用
b. 右键TCP/IP 启用
c. 右键 TCP/IP 属性,弹出 TCP/IP属性 对话框, 点击 IP 地址,将 IP1和 IP7 的 TCP动态端口 设置为 127.0.0.1,将所有IP端口的 已启用 设置为 是 ,最后将IPAII的 TCP动态端口 设置为 1433
点击应用,配置完成,重启电脑生效
6.重启电脑完毕,使用telnet命令测试1433端口是否打开
a. 打开 win7 telnet,度娘说,方法我这里有,请点击
b. 在命令行输入 :telnet 127.0.0.1 1433,(注意telnet与127之间有空格,1与1433之间有空格)
连接成功出现如下界面
下面我们用myeclipse 连接 SQL Server2012 数据库,功能和上一篇文章一样,再网站书注册用户,信息保存到数据库中,代码上有少许变化,下面会提到
7. 打开 SQL Server,创建数据库,关闭 SQL Server, 这里我们还是用上一篇文章的 TestDB 数据库,没有新建
8. 打开 MyEclipse, 创建 TestDB_JDBC项目,右键src -> Build Path -> Configure Build Path,点击 Libraries标签,然后单击 Add External JARs,找到 sqljdbc4.jar 文件并打开,单击 OK 完成构建路径的配置
9. 代码结构如下图
Login.java
<span style="font-family:Microsoft YaHei;font-size:10px;">package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sql.SqlFunction;
public class Login extends HttpServlet{
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
String username = request.getParameter("username");
String password = request.getParameter("password");
SqlFunction sqf = new SqlFunction();
System.out.println("username " + username);
System.out.println("password " + password);
String sql = "insert into login (username,password)values('"+username+"','"+password+"')";
sqf.executeQuery(sql);
response.sendRedirect("success.jsp");
};
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
doPost(request,response);
};
}
</span>
SqlFunction.java
<span style="font-family:Microsoft YaHei;font-size:10px;">package sql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SqlFunction {
Connection conn;
ResultSet rs;
ResultSet rsInput;
Statement stmt;
public SqlFunction(){
try {// 注册数据库驱动
// Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // JDBC-ODBC 注册方法
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
System.out.println("sql error " + e);
}
}
public void executeUpdate(String sql) {
stmt = null;
rs = null;
try {// 建立数据库连接
//conn = DriverManager.getConnection("jdbc:odbc:TestDB", "sa", "saberhao123"); //JDBC-ODBC建立连接方法
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=TestDB", "sa", "saberhao123"); //改成你们的用户名密码
stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (SQLException e) {
System.out.println("sql error" + e);
}
}
public ResultSet executeQuery(String sql)
{
stmt = null;
rs = null;
try
{//
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=TestDB", "sa", "saberhao123");
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException e)
{
System.out.println("sql error"+e);
}
return rs;
}
}
</span>
注意代码里面提到的JDBC-ODBC方法,和我们在用的JDBC方法实现的区别
login.jsp
<span style="font-family:Microsoft YaHei;font-size:10px;"><%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="login" method="get">
用户名:<input type="text" name="username">
<br>
密 码:<input type="text" name="password"/>
<br>
<input type="image" value="注册" class="buttonface" name="Submit" src="images/zuce.gif">
</form>
</body>
</html>
</span>
success.jsp
<span style="font-family:Microsoft YaHei;font-size:10px;"><%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'success.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
Sucess!!! <br>
</body>
</html>
</span>
修改 WebRoot/WEB-INF/web.xml
<span style="font-family:Microsoft YaHei;font-size:10px;"><?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>servlet.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
</span>
10. 将网站部署到 tomcat 中,输入 http://localhost:8082/TestDB_JDBC/login.jsp 进行注册
11. 查看 TestDB,看看我们的数据是否更新了~
参考文档
http://jingyan.baidu.com/article/7c6fb42869932380652c9075.html
http://blog.youkuaiyun.com/stewen_001/article/details/19553173/