您的位置:首页 > 数据库

通过JDBC/ODBC方法连接SQL Servers与MyEclipe(SQL)

2015-07-30 19:52 495 查看
本文将介绍如何通过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>


success.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 '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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: