JDBC二查询(web基础学习笔记八)

一、建立数据库

--创建news表空间
CREATE TABLESPACE tbs_news
DATAFILE ‘F:\ORACLE\news.dbf‘
SIZE 10M
AUTOEXTEND ON;
--创建news用户
CREATE USER news IDENTIFIED BY news
DEFAULT TABLESPACE tbs_news;
--授权
GRANT RESOURCE,CONNECT TO news;

--创建表
SELECT * FROM tab;
-----新闻发布系统
-----用户表
drop table NEWS_USER;
create table NEWS_USER(
  id                NUMBER(10, 0)    PRIMARY KEY NOT NULL,  ---用户编号
  username          varchar2(20)     NOT NULL,              ---用户名
  password          varchar2(20)    NOT NULL,              ---密码
  email             varchar2(100)   NULL,
  usertype          number(5,0)     NOT NULL               ----用户类型  0:管理员 1:普通用户
);
INSERT INTO NEWS_USER VALUES(1,‘admin‘,‘admin‘,‘[email protected]‘,0);
INSERT INTO NEWS_USER VALUES(2,‘user‘,‘user‘,‘[email protected]‘,1);
INSERT INTO NEWS_USER VALUES(3,‘test‘,‘test‘,‘[email protected]‘,1);
COMMIT;
SELECT * FROM news_user;

-------新闻分类表, 有外键存在,因此先删除子表
drop table NEWS_COMMENT;
drop table NEWS_DETAIL;
drop table NEWS_CATEGORY;
create table NEWS_CATEGORY(
    id              NUMBER(10,0)     NOT NULL PRIMARY KEY,   --类别ID
    name            varchar2(50)     NOT NULL,                 --类别名称
    createdate      Date             NOT NULL ---创建时间
);

INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(1,‘国内‘,sysdate);
INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(2,‘国际‘,sysdate);
INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(3,‘娱乐‘,sysdate);
INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(4,‘军事‘,sysdate);
INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(5,‘财经‘,sysdate);
INSERT INTO NEWS_CATEGORY(id,name,createdate) VALUES(6,‘天气‘,sysdate);
COMMIT;

--查询
SELECT * FROM news_category;
-----新闻明细表
create table NEWS_DETAIL(
    id               number(10,0)    NOT NULL  PRIMARY KEY,    --id
    categoryId       number(10,0)    NOT NULL,                 --新闻类别id
    title                  varchar2(100)   NOT NULL,--新闻标题
    summary          varchar2(255)   NULL,                   --新闻摘要
    content          CLOB   NULL,                           --新闻内容
    picpath          varchar2(255)   NULL,                  --新闻图片路径
    author                  varchar2(50)    NULL,--发表者
    createdate       date            NULL,                  --创建时间
    modifydate       date            NULL,                  --修改时间
    Foreign key(categoryId) references NEWS_CATEGORY(id)
);
--插入数据
INSERT INTO NEWS_DETAIL VALUES(1,1,‘尼日利亚一架客机坠毁‘,‘尼日利亚一架客机坠毁,伤亡惨重‘,‘尼日利亚一架客机坠毁,伤亡惨重,10人重伤‘,‘‘,‘admin‘,sysdate,sysdate);
SELECT * FROM news_detail;
-----新闻评论表
create table NEWS_COMMENT(
    id               number(10,0)    PRIMARY KEY,            --id
    newsId           number(10,0)    NOT NULL,               --评论新闻id
    content          varchar2(2000),                         --评论内容
    author           varchar2(50),                          --评论者
    ip               varchar2(15),                          --评论ip
    createdate       date,                                  --发表时间
    Foreign key(newsId) references NEWS_DETAIL(id)
);

SELECT * FROM news_detail;
DELETE FROM news_detail WHERE ID=2;
COMMIT;

二、将oracle的driver导入到web项目中

  1. oracle11g为例:D:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar
  2. 将此ojdbc6.jar复制到项目中新建lib文件夹保存
  3. 右击项目选择build path-buil confing--libaries-add jar选择jar包所在路径如news/WebRoot/WEB-INF/lib/ojdbc6.jar点击确定

三、将Driver导入并建立连接

    // 建立连接对象
        Connection conn = null;
        // 建立Statement对象
        Statement stmt = null;
        // 建立结果集对象ResultSet

使用Class.forName()来导入Driver

//(1)使用Class.forName()加载驱动
Class.forName("jdbc:oracle:thin:@localhos:1521:orcl","news","news")

四、Connection来建立连接

// (2)使用DriverManager.getconnection(url,用户名,密码)建立连接返回类型是Connection类型
            conn = DriverManager.getConnection(
                    "jdbc:oracle:thin:@localhost:1521:orcl", "news", "news");

五、写SQL并执行

// (3)编写查询sql语句
            String sql = "SELECT c.name,d.title,d.summary,d.content,d.author,d.createdate,d.modifydate FROM news_detail d,news_category c WHERE d.categoryid=c.id ";
            // (4)建立Statement对象,将sql语句导入,使用结果集来接收
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);

六、遍历结果集输出

// (5)遍历结果集
            // 首先声明变量用来存放结果集中的字段
            System.out.println("===========新闻列表================");
            while(rs.next()){
            String catename = rs.getString("name");
            String title = rs.getString("title");
            String summary = rs.getString("summary");
            String content = rs.getString("content");
            String author = rs.getString("author");
            Date createdate = rs.getDate("createdate");
            Timestamp modifydate = rs.getTimestamp("modifydate");

            System.out.println(catename + "\t" + title + "\t" + summary + "\t"
                    + content + "\t" + author + "\t" + createdate + "\t"
                    + modifydate);

以上完整代码:

package pb.news;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Date;

public class newstest {

    public void select() {
        // 建立连接对象
        Connection conn = null;
        // 建立Statement对象
        Statement stmt = null;
        // 建立结果集对象ResultSet
        ResultSet rs = null;
        try {
            // (1)使用Class.forName来导入drive
            Class.forName("oracle.jdbc.driver.OracleDriver");
            // (2)使用DriverManager.getconnection(url,用户名,密码)建立连接返回类型是Connection类型
            conn = DriverManager.getConnection(
                    "jdbc:oracle:thin:@localhost:1521:orcl", "news", "news");
            // (3)编写查询sql语句
            String sql = "SELECT c.name,d.title,d.summary,d.content,d.author,d.createdate,d.modifydate FROM news_detail d,news_category c WHERE d.categoryid=c.id ";
            // (4)建立Statement对象,将sql语句导入,使用结果集来接收
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
            // (5)遍历结果集
            // 首先声明变量用来存放结果集中的字段
            System.out.println("===========新闻列表================");
            while(rs.next()){
            String catename = rs.getString("name");
            String title = rs.getString("title");
            String summary = rs.getString("summary");
            String content = rs.getString("content");
            String author = rs.getString("author");
            Date createdate = rs.getDate("createdate");
            Timestamp modifydate = rs.getTimestamp("modifydate");

            System.out.println(catename + "\t" + title + "\t" + summary + "\t"
                    + content + "\t" + author + "\t" + createdate + "\t"
                    + modifydate);
            }
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                rs.close();
                stmt.close();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }

    public static void main(String[] args) {
        newstest nt = new newstest();
        nt.select();

    }

}
时间: 2025-01-07 12:25:34

JDBC二查询(web基础学习笔记八)的相关文章

简单分页查询(web基础学习笔记十三)

一.建立资源文件和工具类 1.1 .database.properties jdbc.driver_class=oracle.jdbc.driver.OracleDriver jdbc.connection.url=jdbc:oracle:thin:@localhost:1521:orcl jdbc.connection.username=scott jdbc.connection.password=tiger 1.2.建立包:com.pb.emp.untily ConfigManager类 p

JavaBean(web基础学习笔记十二)

一.JavaBean简介 JavaBean是使用Java语言开发的一个可重用的组件,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁.JSP搭配JavaBean来使用, 有以下的优点: 可将HTML和Java代码分离,这主要是为了日后维护的方便.如果把所有的程序代码(HTML和Java)写到JSP 页面中,会使整个程序代码又多又复杂,造成日后维护上的困难. 可利用JavaBean的优点.将常用到的程序写成JavaBean组件,当在JSP要使用时,只要调用Java

JDBC五数据源和数据池(web基础学习笔记十一)

一.为什么使用数据源和连接池 现在开发的应用程序,基本上都是基于数据的,而且是需要频繁的连接数据库的.如果每次操作都连接数据库,然后关闭,这样做性能一定会受限.所以,我们一定要想办法复用数据库的连接.因此针对这种情况,提出了数据源和连接池的概念.使用数据源和连接池可以达到复用数据库连接的目的. 二.数据源和连接池概念 其实,数据源和连接池是两个不同的概念.有些人会把它们弄混.数据源是用来连接数据库,获得Connection 对象的,在Java 中使用javax.sql.DataSource接口来

监听器(web基础学习笔记二十二)

一.监听器 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行. 二.监听器统计在线人数--HttpSessionListener实现 package com.pb.news.listenter; public class OnlineCounter { pub

JDBC一(web基础学习笔记七)

一.JDBC Java数据库的连接技术(Java DataBase Connectivity),能实现Java程序以各种数据库的访问 由一组使用Java语言编写的类和接口(JDBC API)组成,它java.sql以及javax.sql中 二.JDBC 原理以及驱动程序的分类 2.1.JDBC 原理 原来的 SUN 公司(现在是Oracle 公司)在开发JDBC API 时,将这些接口和类放在了两个包中,java.sql 包和javax.sql 包中.而主要的接口和类都是在java.sql 包中

Servlet一(web基础学习笔记二十)

一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1.编写一个Java类,实现servlet接口. 2.把开发好的Java类部署到web服务器中. 按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet 二.ServletAPI 三.Servlet的方法 四.S

JDBC四(web基础学习笔记十)

一.增加 .修改.删除.查询 将功能整合在一个类中 package pb.base; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import pb.until.ConfigManager

使用JSP实现输出(web基础学习笔记二)

Jsp:Java Server Page 服务器端的Java页面,动态网页技术 jsp注释 显式注释:这种注释客户端是允许看见的;<!--html注释--> 隐式注释:这种注释客户端是看不到的 注释:格式一://注释,单行注释 格式二:/*多行注释*/ 格式三:<%--注释--%>jsp注释 <!-- 这个注释客户端可以可见 --> <%--这个注释客户端看不到 --%> <% out.println("学习jsp输出"); //输

JDBC三(web基础学习笔记九)

一.JDBC编程步骤 二.将数据库的信息放入资源文件 // (1)使用Class.forName来导入drive Class.forName("oracle.jdbc.driver.OracleDriver"); // (2)使用DriverManager.getconnection(url,用户名,密码)建立连接返回类型是Connection类型 conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost