第六篇:数据库开始篇

原创 2004年06月24日 07:04:00

严重警告:对前面的问题还没弄清楚的,请不要再往下看了<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

开场白:本来是应该从哪里ctrl+v一段关于JDBC的东东给你看看的,是想到它实在有点过于理论和教条,所以就不太过于罗嗦了,但还是讲一点两点,要不然跟我一样蠢笨又一无所知的人真的不知道我写的是“人的代码”还是“机器的代码”。因此强烈的建议你不要跳过以下的内容。

数据库编程的一些基本步骤

注册驱动

创建数据库连接

执行SQL语句获得结果

要用到的一些基本类

Connection

Statement类和PeparedStatement

ResultSet

要注意的问题

数据库操作的时候会出现异常,要注意捕获并处理

用以下的代码做解释

 

          //定义数据库的驱动程序(以下给出的是连接odbc数据库的)

String strDriver="sun.jdbc.odbc.JdbcOdbcDriver";

          //定义数据的URL(名称)

String strConnection="jdbc:odbc:myFirstData";

          //数据访问的用户名

String strConnectUsername="";

          //数据库访问的密码

String strConnectPassword="";           

         

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

String sql_temp = “select * from tableName”

try

              {

                     Class.forName(strDriver);//注册驱动

                    

              }

              catch(ClassNotFoundException ex1)

              {

                     ex1.printStackTrace();//捕获驱动注册过程中的异常

              }

try

{

conn =                           //获得数据库连接

                            DriverManager.getConnection(    strConnection,

                                                                                strConnectUsername,

                                                                                strConnectPassword);

         

stmt = conn.CreateStatement();//创建Statement的对象stmt

          rs = stmt.executeQuery(sql_temp);//利用stmt执行SQL操作返回结果集交给rs

}

catch(SQLException ex2)

{

                ex2.printStackTrace();

}

来一个例子说明一下如何?

功能描述

写一个用户登陆的程序,用户输入密码,点击“登陆”按钮,在用户数据表中查找,如果有对应的记录,就告诉:你好,欢迎你!如果没有该用户,就提示:用户名或者密码错误,请重新登陆。

哇,终于到了编写有点人摸狗样程序的时候了,以前写的哪能叫程序啊,简直是拿三结构的名字来欺骗人嘛。。。

建立数据库:为了简单就用access建一个吧,数据库的名字就user吧,在odbc中设置一下吧。什么,不知道怎么设置?哦,我现在真的没心情跟你解释。请你解决了这个问题再往下看吧。

建立一个数据表:userTable

用户号码             UserNo            文本

用户密码             PassWord          文本

所在的部门号码       DepartNo          文本

填入几个值吧

111    111      001

222    222      002

333    333      003

登陆的jsp恐怕以后我不会再告诉你怎么写这样的jsp

login.jsp

<%@ page contentType="text/html; charset=gb2312" %>

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<html:html>

    <head>

        <title>Login</title>

    </head>

   

    <body>

    <center>

    <pre>

    <html:form action="execute.do" method="post">

                    <h3> 请输入 </h3>

        

         用户名:   <html:text property="userID" size="12"/>

        

           :   <html:text property="passWord" size="12"/>

      

       <html:submit value="提交"/>  <html:reset value="重置"/>

 </html:form>

     </pre>

    </center>

    </body>

</html:html>

显示正确结果的页面

success.jsp

<%@ page contentType="text/html; charset=gb2312" %>

<html>

<center>

  欢迎你!!

</center>

</html>

提示警告的页面

error.jsp

<%@ page contentType="text/html; charset=gb2312" %>

<html>

<center>

    不要意思,您的用户名或密码错误!

 </center>

</html>

好了,下面到程序员真正该做的工作了,那就是写java代码啊。

一,不要问在什么地方写java代码

二,不要问用什么办法把java代码编译成类文件

三,不要问把java文件和类文件放在什么地方

……这样的问题我不会再回答。

你千万不要忘了要导入两个JAR包啊

用来保存数据的form

UserForm.java

import org.apache.struts.action.*;

public class UserForm extends ActionForm

{

    private String userID = null;

    private String passWord = null;

    public String getUserID()

{

       return userID == null?"": userID.trim();

    }

    public void setUserID(String userID)

    {

       this. userID = userID;

    }

    public String getPassWord()

    {

       return passWord == null?"": passWord.trim();

    }

    public void setPassWord(String str2)

    {

       this. passWord = passWord;

    }

}

看见了form了吧,没什么神气的,就是一些属性和关于属性的getset方法

用来处理数据的action

UserAction.java

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.actions.DispatchAction;

public class UserAction  extends DispatchAction

{

       public ActionForward execute(  ActionMapping mapping,

                                    ActionForm form,

                                    HttpServletRequest request,

                                    HttpServletResponse response)

           throws Exception

       {

           //获取页面表单信息

           UserForm uForm = (UserForm)form;

           //from中获得已经被提交的两个数据

           String temp_id = uForm. getUserID();

            String temp_pass = uForm. getPassWord();

          

           if(!"".equals(temp_id)&&!"".equals(temp_pass))

           {

                     //定义数据库的驱动程序(以下给出的是连接odbc数据库的)

                  String strDriver="sun.jdbc.odbc.JdbcOdbcDriver";

                        //定义数据库的URL(名称)

                  String strConnection="jdbc:odbc:user";

                        //数据访问的用户名

                  String strConnectUsername="";

                        //数据库访问的密码

                  String strConnectPassword="";     

                  Connection conn = null;

                  Statement stmt = null;

                  ResultSet rs = null;

String sql_temp = "select * from userTable where

UserNo='"+temp_id+"' and

PassWord='"+temp_pass+"'";

                 

                  try

                  {

                            Class.forName(strDriver);//注册驱动 

                  }

                  catch(ClassNotFoundException ex1)

                  {//捕获驱动注册过程中的异常

ex1.printStackTrace();                

}

                  try

                  {

                     conn =                           //获得数据库连接

                       DriverManager.getConnection(    strConnection,

 strConnectUsername,

                                                 strConnectPassword);

                               //创建Statement的对象stmt

                     stmt = conn.createStatement();

//利用stmt执行SQL操作返回结果集交给rs       

rs = stmt.executeQuery(sql_temp);                              }

                  catch(SQLException ex2)

                  {

                           ex2.printStackTrace();

                  }

                 

                  int temp_count = 0;

//通过这个循环看从数据库中查询出来了多少条记录

                  while(rs.next())               

{

                     temp_count++;

                  }

                  //如果查询有记录,表明输入的用户名和密码正确

if(temp_count>0)              

 {

                     return mapping.findForward("ok");

                  }

                  else//如果查询没有记录,表明输入的用户名或者密码错误

                  {

                      return mapping.findForward("err");

                  }

           }

           else

           {

              return mapping.findForward("err");

           }

       }

}

好了,代码我已经全部给你了,至于两个xml配置文件(你不要告诉我你还不知道是哪两个吧。)请看上一篇的例子,完全一样,还有两个JAR包和那些tld文件,请你把它们放到它们该呆着的地方吧。应该不要我告诉你怎么运行程序吧?看看结果,整个程序我已经调试通过了,结果完全正确。如果你不能通过,请你调试一下吧,要知道写程序有个非常重要的工作就是调试的落。

 

 

 

 

 

 

Java语言程序设计基础篇原书第十版第六章编程练习题答案

第六章 方法的部分代码,会尽快补全
  • Tanganling
  • Tanganling
  • 2016年11月27日 20:25
  • 3592

java语言程序设计基础篇第六章编程练习题

1 import java.util.Scanner; public class Main{ public static void main(String[] args){ final int...
  • gyhguoge01234
  • gyhguoge01234
  • 2016年07月05日 22:26
  • 3889

JAVA语言程序设计(基础篇)第九章答案

习题9.1 public class SimpleRectangle { double width; double height; SimpleRectangle(){ width = 1;...
  • zhenkeshawn
  • zhenkeshawn
  • 2017年03月06日 23:48
  • 1965

简单粗暴JavaWeb-第六篇:使用mybatis框架代替纯jdbc访问数据库

使用mybatis框架代替纯jdbc访问数据库
  • yhan_shen
  • yhan_shen
  • 2017年11月16日 21:11
  • 99

自学--数据库笔记--第六篇--子查询

数据库笔记—6—子查询 所有使用的都为已制作好的表
  • qq_35532448
  • qq_35532448
  • 2016年12月03日 17:39
  • 75

PostgreSQL学习第六篇--psql常用连接数据库的方法

psql -h -p [dbname] [username] -h 指定要连接数据库所在的主机名或者IP地址 -p 指定连接的数据库端口,最后两个参数是数据库名和用户名。 示例: [postgre...
  • ghostliming
  • ghostliming
  • 2016年11月26日 22:38
  • 5160

从零开始做远控 第六篇 屏幕监控

屏幕监控: 这一节我们是完成屏幕监控的最后一部分,就是在服务端里发送指令,然后从客户端不断获取屏幕截图数据,画到窗口上,形成实时监控。 晒下效果图: ScreenSpy类: 1.首先...
  • sumkee911
  • sumkee911
  • 2016年12月21日 16:41
  • 1399

开始前端-----第六篇

国美在线 *{margin:0; padding:0;} .father{ width:100%; background-color:#fafafa; height:1100px; }...
  • qq_40408175
  • qq_40408175
  • 2017年12月03日 17:28
  • 16

从零开始学GitHub【第六篇】(完结)

编者按:好像许多设计师都会谈代码而色变,连同Git和Github 这类工具也敬而远之。然而,对于设计师而言,Git同样是相当实用、甚至可以说是改变设计文档版本控制的重要工具!今天的文章,我们来聊聊...
  • itmrchen
  • itmrchen
  • 2016年10月17日 15:10
  • 216

javascript 第六篇(入门篇)

javascript 第六篇(入门篇-节点/dom/事件)                   目录 2 第1章  事件 4 1.1 概述 4 1.2 事件三要素 4 1...
  • angularWQ
  • angularWQ
  • 2017年04月02日 10:55
  • 200
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第六篇:数据库开始篇
举报原因:
原因补充:

(最多只允许输入30个字)