本文将介绍如何通过JDBC/ODBC方式连接SQL Servers 与 MyEclipe, 使得通过web修改DB内容
本文主要完成一个简单的注册系统,主要步骤 :
1. 通过SQL Server 创建DB 数据库, 用于存放用户名和密码
2. 创建网页,注册账户,将账户信息更新到步骤一创建的数据库中
下面我们一步步来完成我们的功能
1. 创建 TestDB数据库
在对象资源管理器中,右键 数据库 -> 新建数据库 -> 数据库名称 填入“TestDB” -> 确定
2. 创建 表
再对象管理器中,点击我们新建的 TestDB -> 右键 表 -> 新建 表, 填入两个列, 分别是 username 和 password
3. 保存 表
点击 保存 按钮, 将表名字保存为 login
4. 右键 我们新建立的 表 dbo.login , 编辑前200行 ,我们可以看到我们刚刚创建的空表了
5. 配置数据源
选择控制面板->管理工具->数据源-> 用户DSN -> 添加 -> 填入名称和选择数据库 -> 下一步 -> 选择SQL servers验证 -> 填入账号密码 -> 下一步 -> 勾选 更改默认的数据库 : TestDB -> 下一步 直到 完成
由于之前没有介绍SQL 的用法,所以上面写的比较详细~,接下来,我们开始写网站的内容,关于网站的搭建,可以参考之前的两篇文章 《Myeclipse配置Tomcat》 《MyEclipse下编写JSP "Hello World"》
6 . 新建 Web Project, 在package目录下新建 servlet 和 sql 两个包
7. 在sql下创建 SqlFunction.java,实现数据库访问
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");
} 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");
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:odbc:TestDB", "sa", "saberhao123");
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException e)
{
System.out.println("sql error"+e);
}
return rs;
}
}
8. 在servlet下新建 Login.java,实现在数据库中写入数据
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();
String sql = "insert into login (username,password)values('"+username+"','"+password+"')";
sqf.executeQuery(sql);
response.sendRedirect("success.jsp");
}
}
9. 在WebRoot文件夹下创建login.jsp以及success.jsp文件,用于显示注册以及注册成功界面
login.jsp
<%@ 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="post">
用户名:<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>
<%@ 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>
10. 修改 WebRoot/WEB-INF 下 web.xml
<?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>
11. 将网站工程部署到tomcat上
12. 输入 http://localhost:8082/TestDB/login.jsp 进行注册,检查我们DB上的内容是否有改变
过程中遇到这样的问题
<span style="font-family:Microsoft YaHei;">sql error java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
sql errorjava.sql.SQLException: No suitable driver found for jdbc:odbc:TestDB</span>
一开始我以为是调用库的时候( Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"))大小写有问题,可是检查了很久发现不出来
原来我用的JDK1.8已经不包含了该库,你想知道自己的JDK是否支持,可以检查下 JRE下面 rt.jar 是否包含~
解决的办法就是加载这个库,或者干脆换个JDK =。=
其实JDBC/ODBC这种方法不是推荐方法,因为效率偏低,具体可以详见 Oracle 的说明
下篇文章我们将一起探讨用 微软JDBC的方法进行连接,敬请期待~
参考文章
http://blog.sina.com.cn/s/blog_654d69690100mvzt.html