Java 中Oracle的基本连接、数据类型、及增、删、改、查操作

操作JDBC

在java程序中操作数据库必须使用JDBC。使用JDBC时是固定的操作步骤

  1. 创建一个数据库连接对象Connection
    将Java程序与数据库连接在一起

  2. 获得操作数据库的对象Statement
    执行SQL命令的。

    CRUD
    C:create- insert into
    R:read- select
    U:update- udpate
    D:delete- delete

  3. 如果是查询命令,接收查询结果。ResultSet对象

public static void main(String[] args) throws Exception {
         // 1 创建一个数据库连接对象Connection
         //先加载驱动类:每一个数据库产品都提供使用JDBC连接的功能。
         Class.forName("oracle.jdbc.driver.OracleDriver");
        // String url = "jdbc:oracle:thin:@localhost:1521:xe"; 
        //用自己的数据库
         String url="jdbc:oracle:thin:@服务器ip地址:端口号:数据库名字";
         String user="用户名";
         String password="密码";
         Connection conn = DriverManager.getConnection(url, user, password);
         // 2 获得操作数据库的对象Statement
         String sql = "select * from news order by news_time desc";//sql 语句
         PreparedStatement pstat = conn.prepareStatement(sql);//创建操作对象
         // 3 如果是查询命令,接收查询结果。ResultSet对象
         //rs是结果集对象,结果集中的格式就是一张表的格式
         ResultSet rs = pstat.executeQuery();//executeQuery()执行查询的方法
         //循环操作rs对象 next方法判断有没有下一条记录
         while(rs.next()){
              //rs在循环中表示一行记录
              System.out.println(rs.getInt("news_id"));
              System.out.println(rs.getString("news_title"));
              System.out.println(rs.getDate("news_time"));
              System.out.println("--------------------");
         }
         //关闭连接
         rs.close();
         pstat.close();
         conn.close();
     }

升级版:将连接数据库和释放数据库封装在一个数据库连接对象里面

//链接数据库的方法
public static Connection getConnection() throws Exception{
         //判断 ,如果conn为空,或conn已经关闭了
         if(conn==null || conn.isClosed()){
              //就从数据源中获得一个新的连接
              conn = ds.getConnection();
         }
         return conn;
     }
//释放数据库连接的方法
public static void closeConnection() {
         try {
              if (conn != null && !conn.isClosed()) {
                   conn.close();
              }
              conn = null;
         } catch (SQLException e) {
              e.printStackTrace();
         }
     }

整合在BaseDao对象里面:

package com.gpf.dvd.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 实现数据库连接与关闭
 * 
 * @author 朝九晚十
 */
public class BaseDao {

    Connection conn = null;
    Statement stat = null;
    PreparedStatement ps = null;
    ResultSet rs = null;

    // 链接数据库
    public void getConnection(){
        try {
            if (conn == null || conn.isClosed()) {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                conn = DriverManager.getConnection(
                        "jdbc:oracle:thin:@:1521:orcl", 用户名, 密码);
                stat = conn.createStatement();
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("请检查驱动包是否正确");
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("请检查数据库的配置项是否正确");
        }catch(Exception e){
            e.printStackTrace();
            System.out.println("链接数据库失败");          
        }
    }

    // 关闭数据库
    public void closeConnection() {
        try {
            if (stat != null) {
                stat.close();
            }
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (Exception e) {
            System.out.println("数据库关闭失败");
            e.printStackTrace();
        }
    }
}

Oracle里面的数据类型

字符:CHAR、VARCHAR2(VARCHAR)、LONG、NCHAR和NVARCHAR2几种类型。

1、CHAR:描述定长的字符 串,如果实际值不够定义的长度,系统将以空格填充。它的声明方式如下CHAR(L),L为字符串长度,缺省为1,作为变量最大32767个字符,作为数据 存储在ORACLE8中最大为2000。

2、VARCHAR2(VARCHAR): 描述变长字符串。它的声明方式如下VARCHAR2(L),L为字符串长度,没有缺省值,作为变量最大32767个字节,作为数据存储在ORACLE8中 最大为4000。在多字节语言环境中,实际存储的字符个数可能小于L值,例如:当语言环境为中文(SIMPLIFIED CHINESE_CHINA.ZHS16GBK)时,一个VARCHAR2(200)的数据列可以保存200个英文字符或者100个汉字字符。

3、NCHAR、NVARCHAR2:国家字符集,与环境变量NLS指定的语言集密切相关,NCHAR和NVARCHAR2数据类型分别存储固定长度与可变长度的字符数据,但是它们使用的是和数据库其他类型不同的字符集。在创建数据库时,需要指定所使用的字符集,以便对数据库中数据进行编码。还可以指定一个辅助的字符集[即本地语言集(National Language Set,简称NLS)]。NCHAR和NVARCHAR2类型的列使用辅助字符集,使用方法和CHAR、VARCHAR2相同。varchar2是oracle提供的独特的数据类型,oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar。因为 varchar是标准sql提供的数据类型,有可能随着sql标准的变化而改变,推荐用varchar2。CHAR如果存放字母数字占1个字节,存放 GBK编码的汉字存放2个字节,存放UTF-8编码的汉字占用3个字节;NCHAR根据所选字符集来定义存放字符的占用字节数,一般都为2个字节存放一个 字符(不管字符或者汉字)。同理VARCHAR2与NVARCHAR2的区别。在Oracle9i中,可以以字符而不是字节为单位来表示NCHAR和NVARCHAR2列的长度。

4、LONG:在数据库存储中可以用来保存高达2G的数据,作为变量,可以表示一个最大长度为32760字节的可变字符串。它是从早期版本中继承来的。现在如果想存储大容量的数据,Oracle推荐使用CLOB和NCLOB数据类型。在表和SQL语句中使用LONG类型有许多限制。CLOB和NCLOB CLOB和NCLOB数据类型可以存储多达4GB的字符数据。NCLOB数据类型可存储NLS数据。
行:包括RAW和LONG RAW两种类型。用来存储二进制数据,不会在字符集间转换。

1、RAW:类似于 CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。主要用于对数据库进行解释。指定这两种类型时,Oracle以位的形式来存储数据。RAW数据类型一般用于存储有特定格式的对象,如位图。 RAW数据类型可占用2KB的空间,而LONG RAW数据类型则可以占用2GB大小。

2、LONG RAW:类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节。raw这种格式可以用来保存较小的图形文件或带格式的文本文件,如Miceosoft Word文档。raw是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。long raw 无可变长二进制数据,最大长度是2GB。Oracle用这种格式来保存较大的图形文件或带格式的文本文件,如Miceosoft Word文档,以及音频、视频等非文本文件。在同一张表中不能同时有long类型和long raw类型,long raw也是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。
日期:只有一种类型DATE,用来存储时间信息,站用7个字节(从世纪到秒),绝对没有“千年虫”问题。通过修改实例的参数

NLS_DATE_FORMAT,可以改变实例中插入日期的格式。在一个会话期间,可以通过ALTER SESSION SQL命令来修改日期,或者通过使用SQL语句的TO_DATE表达式中的参数来更新一个特定值。

基本类型看下图:

这里写图片描述

Oracle的增删改查通过一个DVD项目给大家介绍

sql语句:

:”insert into DVD(DVD_NAME,DVD_RENTDATE)values(?,to_date(?,’yyyy-mm-dd’))”
: “delete from DVD where DVD_NAME=’” + name + “’ AND DVD_STATE=1”
:”update DVD set DVD_STATE=’0’,DVD_RENTDATE=to_date(‘”+ date+ “’,’yyyy-mm- d’),DVD_COUNT=DVD_COUNT+1 where DVD_NAME=’”+ name + “‘and DVD_STATE=1”
:String sql = “select * from DVD”;
排序:select * from 表名 where 条件 order by 字段 desc;

具体解释看《迷你DVD项目》:用Oracle的增、删、改、查实现对DVD的操作(迷你DVD)【点击进入!!!!!!!!!!!!】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值