`
qmug
  • 浏览: 202810 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

从数据库中读取数据(直连版本)

    博客分类:
  • J2EE
阅读更多
从数据库中读取数据(直连版本)

下面的这里例子实现的是在注册的页面里面要注册的是用户名、电话、城市。其中城市是在给定的数据库中读取出来的。然后注册。

所用到的是数据库test728
-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version	5.0.22-community-nt


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;


--
-- Create schema test728
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ test728;
USE test728;

--
-- Table structure for table `test728`.`t`
--

DROP TABLE IF EXISTS `t`;
CREATE TABLE `t` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `regtime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `user` varchar(45) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `test728`.`t`
--

/*!40000 ALTER TABLE `t` DISABLE KEYS */;
INSERT INTO `t` (`id`,`regtime`,`user`) VALUES 
 (1,'2008-07-28 18:59:31','1'),
 (2,'2008-07-28 19:06:20','123');
/*!40000 ALTER TABLE `t` ENABLE KEYS */;


--
-- Table structure for table `test728`.`user`
--

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `username` varchar(45) NOT NULL,
  `tel` varchar(45) default NULL,
  `city` varchar(45) NOT NULL,
  `regtime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `test728`.`user`
--

/*!40000 ALTER TABLE `user` DISABLE KEYS */;
INSERT INTO `user` (`id`,`username`,`tel`,`city`,`regtime`) VALUES 
 (1,'aa','123','shenyang','2008-07-28 19:07:28'),
 (2,'aabb','111','shenyang','2008-07-28 19:07:45'),
 (3,'abbbba','11123','xian','2008-07-28 19:08:05'),
 (4,'ll','lll','shenyang','2008-07-29 19:09:35'),
 (5,'rr','rr','xian','2008-07-29 19:16:55');
/*!40000 ALTER TABLE `user` ENABLE KEYS */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;


其中字段 `regtime` 的类型是timestamp 他可以把系统的时间自动添加到数据库里面。在注册时间比较有用。


所用到的jsp页面  index.jsp  reg.jsp  success.jsp
Index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
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 'index.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>
    <jsp:forward page="index.do"></jsp:forward>
  </body>
</html>

说明:这里使用了<jsp:forward page="index.do"></jsp:forward> 标签

Reg.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<% %>
<body>
<form id="form1" name="form1" method="post" action="reg.do">
  用户名:
  <label>
  <input name="username" type="text" id="username" />
  </label>
  <p>电话:
    <label>
    <input name="tel" type="text" id="tel" />
    </label>
  </p>
  <p>城市:
    <label>
    <select name="city" id="city">
			   <c:forEach items="${b}" var="b">
			   <option>${b.city}</option>			
 				</c:forEach>
    </select>
    </label>
  </p>
  <p>
    <label>
    <input type="submit" name="Submit" value="提交" />
    </label>
  </p>
</form>

</body>
</html>


说明:其中
   <c:forEach items="${b}" var="b">
   <option>${b.city}</option>
</c:forEach>
使用的是jstl语言,需要注意的是要使用的时候需要在前面加上
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


Success.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
登录成功
</body>

</html>

这个页面就没有什么好说的了。

1个form
package form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

public class RegForm extends ActionForm {
	

	/** username property */
	private String username;

	/** tel property */
	private String tel;

	/** city property */
	private String city;

	/*
	 * Generated Methods
	 */

	/** 
	 * Method validate
	 * @param mapping
	 * @param request
	 * @return ActionErrors
	 */
	public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		// TODO Auto-generated method stub
		return null;
	}

	/** 
	 * Method reset
	 * @param mapping
	 * @param request
	 */
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		// TODO Auto-generated method stub
	}

	/** 
	 * Returns the username.
	 * @return String
	 */
	public String getUsername() {
		return username;
	}

	/** 
	 * Set the username.
	 * @param username The username to set
	 */
	public void setUsername(String username) {
		this.username = username;
	}

	/** 
	 * Returns the tel.
	 * @return String
	 */
	public String getTel() {
		return tel;
	}

	/** 
	 * Set the tel.
	 * @param tel The tel to set
	 */
	public void setTel(String tel) {
		this.tel = tel;
	}

	/** 
	 * Returns the city.
	 * @return String
	 */
	public String getCity() {
		return city;
	}

	/** 
	 * Set the city.
	 * @param city The city to set
	 */
	public void setCity(String city) {
		this.city = city;
	}
}

在RegAction用到的

2 个action
Index
package action;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import db.DB;


public class IndexAction extends Action {
	/**
	 * 
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		// TODO Auto-generated method stub
		ArrayList a=new DB().yonghu();//通过yonghu这个方法把city对象取出来
		request.setAttribute("b", a);//给ArrayList里面的a进行赋值."b"所对应的是reg.jsp中forEach里面的。
		return mapping.findForward("ok");//跳转到注册页面
	}
}

Reg
package action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import db.DB;
import form.RegForm;


public class RegAction extends Action {
	
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		RegForm regForm = (RegForm) form;// TODO Auto-generated method stub
		String username=regForm.getUsername();//下面的三句话是从form中取得名字、电话、城市
		String tel=regForm.getTel();
		String city=regForm.getCity();
		new DB().adduser(username, tel, city);//通过adduser方法插入到数据库里面
		
		return mapping.findForward("ok");//跳转到成功页面
	}
}


DB包
package db;

import java.sql.*;//为了能使用数据库,我们加载了数据库包
import java.text.SimpleDateFormat;
import java.util.*;

import javabean.yonghu;


public class DB {
	private Connection conn;//用来连接数据库的“数据库连接对象”

	private PreparedStatement stmt;//数据库操作对象

	private ResultSet rs;

	
	public DB() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/test728", "root", "1234");
					} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 添加用户adduser方法  测试完毕
	 * @author qmug
	 * @version 1.0
	 */
	public boolean adduser(String username,String tel,String city) {
		try {

		stmt = conn.prepareStatement("insert into test728.user(username,tel,city) values(?,?,?)");
			//stmt.setInt(1, name);
			stmt.setString(1, username);
			stmt.setString(2, tel);
			stmt.setString(3, city);

			stmt.execute();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return false;

	}
	
	
	
	
	
	/**
	 * 此方法用于查询客户信息    测试完毕
	 * @author qmug
	 * @version 1.0
	 * @return
	 */

		 public ArrayList yonghu(){
			ArrayList a=new ArrayList();
			try {
				
				stmt=conn.prepareStatement("select distinct city from test728.user");
	
				
				rs=stmt.executeQuery();
				while(rs.next()){

					yonghu c=new yonghu();
					//c.setId(Integer.parseInt(rs.getString("id")));
					//c.setUsername(rs.getString("username"));
					//c.setTel("tel");
					c.setCity(rs.getString("city"));
					a.add(c);
					
				}
			
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			return a;
		}
}

所用到的javabean
package javabean;

public class yonghu {
	private int id;
	private String username;
	private String tel;
	private String city;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}

}


struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="regForm" type="form.RegForm" />

  </form-beans>

  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action path="/index" type="action.IndexAction">
      <forward name="ok" path="/reg.jsp" />
    </action>
    <action
      attribute="regForm"
      name="regForm"
      path="/reg"
      scope="request"
      type="action.RegAction">
      <forward name="ok" path="/success.jsp" />
    </action>

  </action-mappings>

  <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>


总结:想要实现功能首先把所要用到的页面做好。然后再往里面填写其中的逻辑。这个例子的逻辑思路是首先由一个引导页index.jsp跳转到index.do。在index.do所调用DB中的yonghu方法来查询出来城市,然后跳转到reg.jsp页面 。在提交表单时候调用reg.do执行DB中的adduser方法来向数据库中插值。最后跳转到成功页面。
分享到:
评论

相关推荐

    PowerDesigner从数据库中导出表结构.doc

    这是因为PowerDesigner需要从Oracle数据库中读取表结构信息,然后将其导出到PowerDesigner中,以便进行数据库设计和数据建模。 在实际应用中,PowerDesigner从Oracle数据库中导出表结构可以用于多种目的,例如: *...

    C#char图表-从SQLite中读取数据显示在dataGridView报表中并用char图表饼状图,柱状图,折线图等显示出来

    在这里,我们从SQLite读取的数据被填充到dataGridView中,用户可以清晰地查看数据报表。 5. **Chart控件**:Visual Studio自带的Chart控件是实现数据可视化的工具,它可以生成各种图表,如饼状图、柱状图和折线图。...

    OPC服务器软件KEPServer实现与MySQL连接

    KEPServer 软件可以实时地从 MySQL 数据库中读取数据,并将数据写入到 MySQL 数据库中。同时,KEPServer 软件也可以实现实时数据监控和分析。 KEPServer 软件实现与 MySQL 连接需要安装和配置 MySQL 数据库、KEP...

    Siemens S7 1200 PLC连接SQLSERVER数据库

    同时,也可以根据需要从数据库请求指令或数据,控制PLC的行为。 7. **错误处理和调试**:确保在数据传输过程中有适当错误处理机制,以便在出现问题时能及时识别并恢复。调试是关键,要确保PLC和数据库之间的通信...

    数据库连接方式1

    在本文中,我们将详细讨论如何在新的计算机上配置数据库连接,以确保能够顺利访问存储在"用户信息.mdb"文件中的数据,这个过程涉及到用户信息.udl文件的使用。 首先,"用户信息.udl"文件是数据库连接字符串的载体,...

    Java直连数据库代码还有连接池代码

    首先,让我们了解Java直连数据库的基本步骤。这通常涉及以下关键知识点: 1. **JDBC(Java Database Connectivity)**: JDBC是Java平台的标准API,允许Java程序与各种数据库进行通信。它提供了一组接口和类,使得...

    ArcEngine连接PostgresSQL所需五个.dll

    在IT行业中,ArcEngine是一款由Esri公司推出的强大的地理信息系统(GIS)开发平台,它允许开发者构建具有地图显示、空间分析、数据管理等功能的应用程序。PostgreSQL则是一种开源的对象关系型数据库系统,以其强大、...

    asp.net mvc T4模版连接数据库

    4. **编写T4模板**:创建一个新的T4文本模板文件(.tt),并在其中编写代码来读取数据库元数据,然后根据元数据生成对应的实体类和上下文类代码。你可以使用`System.Data.Entity.Database.SqlQuery`等方法来获取...

    ArcSDE直连方法(直连字符串)

    总之,ArcSDE直连方法(直连字符串)为GIS专业人员提供了一种高效、简便的数据库连接手段,尤其是在处理大量空间数据的环境中,这种连接方式的优越性更为明显。掌握直连字符串的构造规则,不仅能够优化数据库的访问...

    SAP Data Services如何链接MYSQL

    SAP Data Services 是一种功能强大的数据集成工具,它允许用户从各种数据源中提取、转换和加载数据。为了连接 MYSQL 数据库,需要按照以下步骤进行操作。 首先,需要打开 SAP Business Objects Data Services,然后...

    SQLServer-JDBC直连包

    总结来说,"SQLServer-JDBC直连包"是Java开发者连接SQL Server数据库的关键组件,它提供了与SQL Server通信的桥梁,使得Java应用能够执行SQL命令,读取、修改数据库中的数据。正确理解和使用这个包,对于任何涉及SQL...

    数据存储技术在分布式数据库中的应用.pdf

    由于数据分布在多个场地,处理数据的代价较高,这不仅包括了数据的存储成本,还包括数据的读取和更新操作时产生的通讯代价。因此,为了解决分布式数据库在数据存储方面面临的挑战,人们急需探索新的数据储存技术,以...

    ORACLE直连数据库注入提权详解.pdf

    ### ORACLE直连数据库注入提权详解 #### ORACLE数据库简介 ORACLE是一款基于高级结构化查询语言(SQL)的大型关系型数据库管理系统。它利用SQL作为其主要的数据管理语言,该语言支持数据定义、数据操作(包括查询)...

    VB与数据库CAD连接程序

    在这个圆曲线测设软件中,程序会从数据库中提取点坐标,这些坐标可能是预先存储的设计数据,为后续的计算和测设工作提供基础。 接下来,我们来看看VB如何与CAD系统集成。通过使用AutoCAD的.NET API或COM接口,VB...

    数据库数据图表的显示

    在IT行业中,数据库数据图表的显示是数据分析与可视化的一个重要环节。这有助于我们理解、解释和传达存储在数据库中的大量信息。在这个场景中,我们提到使用开源代码来创建位图,如线条图、饼状图和柱状图,这些都是...

    delphiXE7开发android直接操作SQL2008数据库

    这涉及到客户端(Android应用)和服务器端的交互,以及对数据库的基本CRUD(创建、读取、更新、删除)操作。 首先,Delphi XE7是Embarcadero公司推出的一款集成开发环境(IDE),它支持跨平台开发,包括Windows、...

    SQL Server 2005直连驱动

    SQL Server 2005直连驱动是针对微软SQL Server数据库管理系统的一个重要组件,它允许应用程序直接与数据库服务器建立连接,而无需通过额外的中间件或桥接器。这一特性对于提升程序性能、减少资源消耗以及提高代码...

    八种数据库的连接方式

    在IT领域,数据库连接是软件开发中的一个关键环节,它涉及到如何有效地与各种数据库系统进行通信,以实现数据的读取、写入、更新和删除等操作。本文将详细介绍八种常见数据库的连接方式,包括Oracle、DB2、SqlServer...

    java连接access的mdb文件

    创建一个`PreparedStatement`对象来执行SQL语句,例如读取数据: ```java String query = "SELECT * FROM myTable"; PreparedStatement pstmt = conn.prepareStatement(query); ResultSet rs = pstmt....

Global site tag (gtag.js) - Google Analytics