设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计
 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>帮助中心 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopin QQ:2922748026   
java连接数据库及数据库的查询
文章来源:www.biyezuopin.vip   发布者:毕业作品网站  
-ms-text-justify: inter-ideograph;">*一些操作数据库方法的集合

*/

public class DataOperate {

/*

*函数功能:获取连接数据库的对象

*/

public Connection getConn() throws Exception{

Connection conn =null;

//加载驱动

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

//定义URL

String url= "jdbc:sqlserver://localhost:1433;databaseName=master";

//建立连接

conn = DriverManager.getConnection(url,"sa","123456");

return conn;

}

/*

*函数功能:获取执行sql语句的对象

*/

public Statement getStmt(Connection conn) throws SQLException{

Statement stmt =null;

stmt = conn.createStatement();

return stmt;

}

/*

*函数功能:执行sql语句,获取结果集

*/

public ResultSet execQuery(String sql,Statement stmt) throws SQLException{

ResultSet rs=null;

rs=stmt.executeQuery(sql);

return rs;

}

}

ExecQuery.java

package servlets;

import java.io.*;

import java.sql.*;

import java.util.*;

import dboperate.DataOperate;

import beans.StudentBean;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/*

*servlet,项目的核心所在,实现数据操作,实现具体业务逻辑

*/

public class ExecQuery extends HttpServlet {

private static final String CONTENT_TYPE="text/html;charset=GBK";

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request,response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

//设置输入的编码机制

request.setCharacterEncoding("GBK");

//设置输出的编码机制

response.setContentType(CONTENT_TYPE);

Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

//获取sql语句

String sqlstr=request.getParameter("sqlstring").trim();

System.out.println(sqlstr);

try{

//实例化数据库操作类的对象

DataOperate oper=new DataOperate();

//实例化一个集合工具类的对象,用来保存表中数据

ArrayList students=new ArrayList();

//获取数据库连接对象

conn=oper.getConn();

//获取执行sql语句的对象

stmt=oper.getStmt(conn);

//执行查询,得到结果集

rs=oper.execQuery(sqlstr, stmt);

while(rs.next()){

//每一条数据库的记录对应一个jobbean实例

StudentBean sb=new StudentBean();

sb.setAddress(rs.getString("address"));

sb.setAge(rs.getString("age"));

sb.setDepartment(rs.getString("department"));

sb.setName(rs.getString("name"));

sb.setNativeplace(rs.getString("nativeplace"));

sb.setSex(rs.getString("sex"));

sb.setSno(rs.getString("sno"));

//把表中查出来的数据封装到javabean中并保存到students容器对象中

students.add(sb);

}

//jsp页面会收到该对象

request.setAttribute("studentlists", students);

//跳转到jsp页面

request.getRequestDispatcher("/ShowStudents.jsp").forward(request, response);

}catch(Exception e){

System.out.println(e.toString());

}finally{

try{

//关闭数据库连接

stmt.close();

conn.close();

}catch(Exception e){

System.out.println(e.toString());

}

}

}

}

ShowStudents.jsp

<%@ page language="java" contentType="text/html; charset=GBK" %>

<%@ page import="java.util.*,java.sql.*,beans.StudentBean"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!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=GBK" />

<title>学生信息列表</title>

<link type="text/css" rel="stylesheet" href="" />

<style type="text/css">

<!--

body{

margin:0px;

background-color:#DEAEFB;

}

table{

border:solid blue 1px;

margin:0px;

background-color:#BA96F5;

}

form{

margin:0px;

}

#div1{

margin-top:0px;

}

.p1{

margin-bottom:0px;

margin-top:0px;

}

-->

</style>

<script type="text/javascript" src=""></script>

<script language="javascript">

</script>

</head>

<%

response.setHeader("Pragma","No-cache");

response.setHeader("Cache-Control","no-cache");

response.setDateHeader("Expires",0);

%>

<body>

<p align="center" class="p1"><img src="images/maintop.gif" /></p>

<center>

<div id="div1">

<form action="ExecQuery" method="post" name="form1">

<table width="800" border="1" cellspacing="0" bordercolor="#B7E3F4">

<tr bgcolor="#99CCFF">

<td colspan="7" align="center">

<textarea name="sqlstring" cols="50" rows="5">请在这里输入查询的sql语句

</textarea>

<input name="chaxun" type="submit" value="查  询" />

</td>

</tr>

</table>

<table width="800" border="1" cellspacing="0" bordercolor="#B7E3F4">

<tr bgcolor="#99CCFF">

<td>学生编号</td>

<td>姓名</td>

<td>性别</td>

<td>年龄</td>

<td>籍贯</td>

<td>所在系</td>

<td>家庭住址</td>

</tr>

<%

//获取保存学生数据的ArrayList对象

List students=(ArrayList)request.getAttribute("studentlists");

if(students!=null){

StudentBean sb=null;

//取出数据,展示出来

for(int i=0;i<students.size();i++){

sb=(StudentBean)students.get(i);

out.print("<tr><td>");

out.print(sb.getSno());

out.print("</td><td>");

out.print(sb.getName());

out.print("</td><td>");

out.print(sb.getSex());

out.print("</td><td>");

out.print(sb.getAge());

out.print("</td><td>");

out.print(sb.getNativeplace());

out.print("</td><td>");

out.print(sb.getDepartment());

out.print("</td><td>");

out.print(sb.getAddress());

out.print("</td></tr>");

}

}

%>

<tr>

<td colspan="7" align="center">

<input name="guanbi" type="button" value="关  闭" onclick="window.close();"/>

</td>

</tr>

</table>

</form>

</div>

</center>

<hr height="2px" color="#3399FF" />

<p align="center"> web查询示例程序<br />

</p>

</body>

</html>

第四步 配置web.xml文件

Web.xml代码如下

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>

<description>Query</description>

<display-name>Query</display-name>

<servlet-name>ExecQuery</servlet-name>

<servlet-class>servlets.ExecQuery</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>ExecQuery</servlet-name>

<url-pattern>/ExecQuery</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>ShowStudents.jsp</welcome-file>

</welcome-file-list>

</web-app>

第五步:启动tomcat,发布项目

如下图:

启动tomcat后,单击按钮,把web项目webquery发布到tomcat服务器目录下,如下图:

第六步,运行。

打开IE浏览器 输入http://localhost:8080/webquery,如下图所示:

在文本域里面输入sql语句,点击查询,如下图所示:

,

Ø jdbc与数据库概述

Ø 访问数据库

Ø 一个查询数据库的WEB示例

7.1 jdbc与数据库概述

数据库是一个有组织的数据集合,它由一个或多个表组成。每一个表中都存储了对一类对象的数据描述。数据库管理系统(database management system,DBMS)以一种与数据库格式一致的方式,提供了存储和组织数据的机制。

7.11数据库编程

1)当前主流数据库

当前最流行的数据库是关系型数据库,它是将数据表示为表的集合,通过建立简单表之间的关系来定义结构的一种数据库。数据库中的表按照行和列的形式来存储信息。行表示关系型数据库中的记录,列表示数据属性。比较著名的关系数据库管理系统有Oracle、Sybase、DB2、MySQL、Microsoft SQL Server、Microsoft Access等。

2)sql语言

SQL是一个国际化标准语言,几乎所有关系型数据库都用SQL语言执行数据查询和操纵。 理解SQL语句时要注意几点:

(1) SQL语言中的语句都是独立执行的,无上下文联系;

(2) 每条语句都有自己的主关键字,语句中可包含若干子句;

(3) SQL语句本身不区分大小写。为突出语句格式,下面例子中保留字采用大写。

1. 建表语句

格式:CREATE TABLE table_name (column1 type [not] null,…)

功能:在当前数据库中创建一张名为的table_name表格结构。

2. 删除表

格式:DROP  table_name

功能:在当前数据库中删除名为table_name的表。

3. 查询语句

格式:SELECT col1,col2,...,coln FROM table_name [WHERE condition_expression]

功能:从数据库表中检索满足条件的记录。WHERE子句是可选项,它可以包含<、 >、 <=、 >=、 =、<>和LIKE运算符。LIKE运算符用于带有通配符百分号(%)和下划线(_)的模式匹配。

4. 插入语句

格式:INSERT  INTO table_name [(col1,col2,...,coln)] VALUES(v1,v2,...,vn)

功能:在表table_name中插入一条记录,各列的值依次分别为v1、v2、…、vn等,若某列的列名未给,则值为NULL。

注意:(1)如果所有的列名都未给,则在Values中必须依次给出所有列的值。(2)给出的值的类型必须与对应的列的类型相一致。

5. 更新语句

格式:UPDATE  table_name  SET  col1=v1 [,col2=v2,...,coln=vn][WHERE  condition_expression]

功能:更新表table_name中满足条件的记录,使列col1的值为v1、列col2的值为v2、…、列coln的值为vn等。

注意:如不给出条件,则更新表中所有记录。

例如,假如银行账户系统中有一张account(账户)表中,账号为“1280316401“的账户取款200元后应更新余额,使用语句如下:

UPDATE account SET accountAmount=accountAmount-200

WHERE accountNumber =’1280316401’

6. 删除语句

格式:DELETE  FROM  table_name [WHERE  condition_expression]

功能:删除表table_name中满足条件的记录。特别注意:如果不给出条件,则删除表中所有记录。

例如,对account表中,账号为“1280316401“的账户进行销户处理,语句如下:

DELETE FORM account WHERE accountNumber=’1280316401’

7.12 JDBC框架结构

1)ODBC数据源

ODBC是OpenDatabaseConnectivity的英文简写。它是由Microsoft提出的为连接不同数据库而制定的一种接口标准,是用C语言实现的,标准应用程序数据接口。通过ODBC API,应用程序可以存取保存在多种不同数据库管理系统(DBMS)中的数据,而不论每个DBMS使用了何种数据存储格式和编程接口。 几乎所有的数据库都支持这一标准。

n ODBC有其不足之处,比如它并不容易使用,没有面向对象的特性等等。

n ODBC的结构包括四个主要部分:应用程序接口、驱动器管理器、数据库驱动器和数据源。

进行ODBC数据源设置,在Windows XP环境下,可按路径开始菜单-设置-控制面板-管理工具-数据源(ODBC),双击可打开如图11.3所示的对话框。

单击系统DSN->单击添加按钮,可以添加不同的odbc数据源。

2) 通过JDBC访问数据库

JDBC与 ODBC的工作原理非常类似。JDBC与ODBC都是基于X/Open的SQL调用级接口, JDBC的设计在思想上沿袭了ODBC,同时在其主要抽象和SQL CLI实现上也沿袭了ODBC,这使得JDBC容易被接受。JDBC的总体结构类似于ODBC,也有四个组件:应用程序、驱动程序管理器、驱动程序和数据源。

JDBC保持了ODBC的基本特性,也独立于特定数据库。使用相同源代码的应用程序通过动态加载不同的JDBC驱动程序,可以访问不同的DBMS。连接不同的DBMS时,各个DBMS之间仅通过不同的URL进行标识。JDBC的 DatabaseMetaData接口提供了一系列方法,可以检查DBMS对特定特性的支持,并相应确定有什么特性,从而能对特定数据库的特性予以支持。与ODBC一样,JDBC也支持在应用程序中同时建立多个数据库连接,采用JDBC可以很容易地用SQL语句同时访问多个异构的数据库,为异构的数据库之间的互操作奠定基础。

但是,JDBC除了具有ODBC的上述特点外,更具有对硬件平台、操作系统异构性的支持。这主要是因为ODBC使用的是C语言,而JDBC使用的是Java语言。Java语言具有与平台无关、移植性强、安全性高、稳定性好、分布式、面向对象等众多优点,而JDBC确保了“100%纯Java”的解决方案,利用Java的平台无关性, JDBC应用程序可以自然地实现跨平台特性,因而更适合于Internet上异构环境的数据库应用。

此外,JDBC驱动程序管理器是内置的,驱动程序本身也可通过Web浏览器自动下载,无须安装、配置;而ODBC驱动程序管理器和ODBC驱动程序必须在每台客户机上分别安装、配置。

1.  JDBC数据库驱动程序

n JDBC数据库驱动程序的功能是:一面用底层协议与数据库服务器进行对话;一面用JDBC API与用户程序进行对话。

n 为实现 “与平台无关”的特点,JDBC为我们提供了一个“驱动程序管理器”,它能动态维护数据库查询所需的所有驱动程序对象。

n 用户可以从数据库供应商那里获得JDBC数据库驱动程序。

2. JDBC驱动程序类型

(1) JDBC-ODBC Bridge

将对JDBC的调用转化为ODBC的调用,要求本地机必须安装ODBC驱动程序,然后注册一个ODBC数据源名 。

(2) JDBC-Native API Bridge

直接将用户的调用转化为对数据库客户端API的调用,要求本地机必须安装好特定的驱动程序,显然限制了应用程序对其它数据库的使用。

(3) JDBC-MiddleWare

它是独立于数据库服务器的,它和一个中间件服务器通讯,由中间件负责与数据库通讯。

(4) Pure JDBC Driver

使用该类型的应用程序无需安装附加的软件,所有对数据库的操作都直接由JDBC驱动程序完成。

如上图所示:我们一般通过(1) JDBC-ODBC Bridge和(4) Pure JDBC Driver

的方式访问数据库

7.13 JDBC典型应用模型

1)两层模型

2)三层模型

7.14 JDBC中的主要类和接口

简单地说,JDBC主要完成下列三项任务:

1 同一个数据库建立连接;

2 向数据库发送SQL语句;

3 处理数据库返回的结果。

这些任务由JDBC API来完成。JDBC API 被描述成为一组抽象的Java接口。这些接口都可能产生异常,如:ClassNotFoundException、SQLException异常,因而编写程序时必须对抛出的异常进行捕获。主要的JDBC API如下:

(1) 驱动程序管理器Drvier Manager

用来加载驱动程序,管理应用程序和已注册的驱动程序的连接。

(2) 连接Connection

封装了应用程序与数据库之间的连接信息。

(3) 驱动程序Driver

负责定位并访问数据库,建立数据库连接和处理所有与数据库的通讯。

(4) 语句Statement

用来在数据库中执行一条SQL语句。

(5) 结果集ResultSet

负责保存执行查询后返回的数据。

7.2 访问数据库

7.21 访问数据库的步骤

1)载入jdbc数据库驱动程序

2)建立与数据库的连接

3)在建立数据库连接的前提下执行sql语句

4)取结果集和结果信息

5)关闭数据库连接

7.22 连接数据库

1)JDBC URL:

jdbc:<子协议>:<数据库子名称>

例如连接到oracle 10g的orcl数据库实例的URL是

jdbc:oracle:thin:@10.0.0.13:1521:orcl

再例如连接到sqlserver 2008的master数据库的URL是

jdbc:sqlserver:// 10.0.0.13:1433;databaseName=master

2)建立连接

//加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

//定义URL

String url="jdbc:oracle:thin:@10.0.0.13:1521:orcl";

//建立连接

Connection conn = DriverManager.getConnection(url,"username","password");

7.23 执行sql语句

取得各列信息

getColumns

取得索引信息

getIndexInfo

7.24 Statement语句

7.25 取结果集中的数据

7.26 一个简单例子

该例把sqlserver2008的master数据库中的spt_monitor表中的数据查询出来,并打印到控制台上

import java.sql.*;

public class DataOperate {

/*

*函数功能:获取连接数据库的对象

*/

public Connection getConn() throws Exception{

Connection conn =null;

//加载驱动

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

//定义URL

String url= "jdbc:sqlserver://localhost:1433;databaseName=master";

//建立连接

conn = DriverManager.getConnection(url,"sa","123456");

return conn;

}

/*

*函数功能:获取执行sql语句的对象

*/

public Statement getStmt(Connection conn) throws SQLException{

Statement stmt =null;

stmt = conn.createStatement();

return stmt;

}

/*

*函数功能:执行sql语句,获取结果集

*/

public ResultSet execQuery(String sql,Statement stmt) throws SQLException{

ResultSet rs=null;

rs=stmt.executeQuery(sql);

return rs;

}

/*

*main方法,程序入口

*/

public static void main(String args[]){

//定义查询的sql语句

String sql="select * from spt_monitor";

//实例化当前类的对象

DataOperate dopt=new DataOperate();

Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

try{

//调用函数获取连接类的对象

conn=dopt.getConn();

//调用函数获取执行sql语句的对象

stmt=dopt.getStmt(conn);

//调用函数取得结果集

rs=dopt.execQuery(sql, stmt);

//循环打印出数据库中每一行数据

while(rs.next()){

System.out.print(rs.getString("cpu_busy")+" "+rs.getString("io_busy"));

}

}catch(Exception e){

e.printStackTrace();

}

try{

if(conn !=null){

//关闭连接对象

conn.close();

}

}catch(Exception e){

e.printStackTrace();

}

}

}

7.3一个查询数据库的WEB示例

本小节以一个实际例子引导大家开发一个简单的查询数据库的web示例。

开发工具:MyEclipse 6.5

数据库:SqlSever2008

Web服务器:Tomcat 6.0

JDBC数据库驱动包:sqljdbc4.jar

以上软件包请同学们自行下载安装。

第一步:打开sqlserver2008、建库、建表,插入数据。

建立student数据库,建立student表,字段如下图所示:

插入如下图所示数据:

以上步骤请同学自己完成。

也可以完全用sql代码的方式完成,参考代码如下:

--一.建库  (注意:C:\data是需要手工建立的目录)

create database STUDENT on

(

name= STUDENT_data,

filename='C:\data\STUDENT_data.mdf',

maxsize=50MB,

size=3MB,

filegrowth=1MB

)

log on

(name= STUDENT_log,

filename='C:\data\STUDENT_log.ldf',

maxsize=50MB,

size=2MB,

filegrowth=1MB

)

;

USE STUDENT;

--二、建表

create table Student.dbo.Student

(sno char(4) primary key,

name varchar(20) not null,

sex varchar(2),

age smallint,

native varchar(20),

department varchar(50),

address varchar(200)

);

---三、插入数据

insert into dbo.Student values ('1101','王燕','女',20,'北京','工程系',null);

insert into dbo.Student values ('1102','张军','男',21,'上海','工程系',null);

insert into dbo.Student values ('1104','张栋','男',21,'南京','工程系',null);

insert into dbo.Student values ('1201','吴华','女',20,'成都','计算机系',null);

insert into dbo.Student values ('1202','李波','男',21,'上海','计算机系',null);

insert into dbo.Student values ('1203','陈建','男',19,'长沙','计算机系',null);

insert into dbo.Student values ('1204','王江洪','男',19,'邵阳','基建系',null);

insert into dbo.Student values ('1205','潘将','男',19,'常德','艺术系',null);

insert into dbo.Student values ('1303','张斌','男',22,'上海','经管系',null);

insert into dbo.Student values ('1305','张斌','女',20,'武汉','经管系',null);

第二步:打开MyEclipse,建立一个web工程webquery,并载入驱动包sqljdbc4.jar。如下图所示:

新建web工程

添加驱动包

添加驱动包

步骤三 建立源代码文件。

分别新建三个包和三个java类文件还有一个jsp文件,如图所示:

源代码及注解如下:

StudentBean.java

package beans;

/*

*javabean 文件,定义一些变量,跟数据库中相关表的字段一致,并设置get/set方法,

*用来封装数据库表中的数据

*/

public class StudentBean {

private String sno;

private String name;

private String sex;

private String age;

private String nativeplace;

private String department;

private String address;

public String getSno() {

return sno;

}

public void setSno(String sno) {

this.sno = sno;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getAge() {

return age;

}

public void setAge(String age) {

this.age = age;

}

public String getNativeplace() {

return nativeplace;

}

public void setNativeplace(String nativeplace) {

this.nativeplace = nativeplace;

}

public String getDepartment() {

return department;

}

public void setDepartment(String department) {

this.department = department;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

}

DataOperate.java

package dboperate;

import java.sql.*;

/*

  全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026     返回首页 如转载请注明来源于www.biyezuopin.vip  

                 

打印本页 | 关闭窗口
 上一篇文章:数据库课程设计任务书
  下一篇文章:云计算复习要点
本类最新文章
Java+MySQL+MyEcl 云计算复习要点 java连接数据库及数据库的查询
C++ 连接数据库的方法详解 windows上配置maven环 springboot项目中pom
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:biyeshejiba@163.com 微信号:biyezuopin QQ:2922748026  
本站毕业设计毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!