毕业作品网站

 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>帮助中心 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopinvvp QQ:1015083682   

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.*;

/*

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

                 

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

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