Java培训-Oracle学习【1】数据库连接

1.连接ORACLE数据库:

  1. 连接放在同一个类的主方法中
package com.softeem.jdbc;

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

public class JDBCTest {
    
    public static void main(String[] args) {
        Connection conn=null;
        Statement st=null;
        ResultSet rs=null;
        
        try {
            //数据库连接
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","system","system");
            //数据库查询
            
            st=conn.createStatement();
            rs=st.executeQuery("SELECT * FROM users");
            while(rs.next()){
                String stuid=rs.getString("stuid");
                String stuname=rs.getString("stuname");
                System.out.println(stuid+"\t"+stuname);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                rs.close();
                st.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

2.连接与操作分开:

2.1 对数据库连接与关闭的工具类

package com.ming.jdbc;

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

public class DBUtil {

    // 定义变量
    private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
    private static final String url = "jdbc:oracle:thin:@localhost:1521:orcl";
    private static final String username = "scott";
    private static final String password = "a123";

    // 加载驱动
    static {
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection connection() {
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(url, username, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    public static void closeConn(Connection conn) {
        if (null != connection()) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // 重载
    public static void closeConn(ResultSet rs, Statement sm, Connection conn) {
        try {
            if (null != rs) {
                rs.close();
            }
            if (null != sm) {
                sm.close();
            }
            if (null != conn) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

2.2 对数据库的操作类

package com.ming.jdbc;

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

public class DBOperation {
    
    /**
     * @param sql 创建表的SQL
     * @return 表是否创建成功
     */
    public static boolean getConn(String sql){
        boolean b=true;
        Connection conn=DBUtil.connection();
        try {
            Statement sm=conn.createStatement();
            sm.executeUpdate(sql);
        } catch (SQLException e) {
            b=false;
            e.printStackTrace();
        }finally{    
            DBUtil.closeConn(conn);
        }
        return b;
    }
    
    //CRUD  C:create R:read U:update D:delete
    public static boolean cudOperation(String sql){
        boolean b=false;
        Connection conn=DBUtil.connection();
        try {
            Statement sm=conn.createStatement();
            int i=sm.executeUpdate(sql);
            if(i>0){
                b=true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{    
            DBUtil.closeConn(conn);
        }
        return b;
    }
    
    public static void query(String sql){
        Connection conn=null;
        try {
            conn=DBUtil.connection();
            Statement sm=conn.createStatement();
            ResultSet rs=sm.executeQuery(sql);
            System.out.println("员工号 \t\t"+"员工姓名 \t\t"+"职位  \t\t"+""+"工资  \t\t");
            while(rs.next()){
                String empno=rs.getString("empno");
                String ename=rs.getString("ename");
                String job=rs.getString("job");
                String sal=rs.getString("sal");
                System.out.println(empno+"\t\t"+ename+"\t\t"+job+"\t\t"+sal);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DBUtil.closeConn(conn);
        }
    }

}

2. 对象的序列化

1.创建学生对象

package com.softeem.bean;

import java.io.Serializable;

public class StudentBean implements Serializable {
// 表中的列  与  bean中的字段是一一对应关系
//  student 表
//       student bean  传值  查询结果的封装,一条对应一个对象
//       student dao   操作
//    DAO data access  object  面向数据库的直接操作,增删改查....
//     用户--〉100(控制台), 100-8(service 业务处理) ---> 92(dao)
//    1 出纳 收集数据,计算  签字
//    2 会计 审核                   签字
//    3 总经理                       签字
//    银行转账
    
    // 学号 char(3) primary key,
    // 姓名 char(4),
    // 性别 char(2),
    // 年龄 int,
    // 班级 char(5)

    private String stuNo;
    private String stuName;
    private String stuSex;
    private int stuAge;
    private String stuClass;

    public String getStuNo() {
        return stuNo;
    }

    public void setStuNo(String stuNo) {
        this.stuNo = stuNo;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public String getStuSex() {
        return stuSex;
    }

    public void setStuSex(String stuSex) {
        this.stuSex = stuSex;
    }

    public int getStuAge() {
        return stuAge;
    }

    public void setStuAge(int stuAge) {
        this.stuAge = stuAge;
    }

    public String getStuClass() {
        return stuClass;
    }

    public void setStuClass(String stuClass) {
        this.stuClass = stuClass;
    }

}

2.对学生对象操作

package com.softeem.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.softeem.bean.StudentBean;

/**
 * softeem.student
 * 
 * @author Administrator
 * 
 */
public class StudentDAO {
//  stu 封装数据 并传值    
    public static void insert(StudentBean stu) {
        String sqlString = "insert into student(学号,姓名,性别,年龄,班级) "
                + "values(?,?,?,?,?)";
        Connection con = DbUtil.getConn();
        try {
//            预编译
            PreparedStatement ps = con.prepareStatement(sqlString);
            ps.setString(1, stu.getStuNo());
            ps.setString(2, stu.getStuName());
            ps.setString(3, stu.getStuSex());
            ps.setInt(4, stu.getStuAge());
            ps.setString(5, stu.getStuClass());

            int row = ps.executeUpdate();
            System.out.println(row);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            DbUtil.close(con);
        }
    }
    
    public static ArrayList query(String stuNO){
//        无条件 select * from student 
        String sql = "select * from student where 学号=?";
        Connection con = DbUtil.getConn();
        ArrayList<StudentBean> students = new ArrayList<StudentBean>();
        try {
            PreparedStatement  ps= con.prepareStatement(sql);
            ps.setString(1, stuNO);
            ResultSet rs =  ps.executeQuery();
            StudentBean sb = null;
            while(rs.next()){
                sb = new StudentBean();
                String stuNo =rs.getString("学号");
                String stuName =rs.getString("姓名");
                String stuSex =rs.getString("性别");
                int stuAge =rs.getInt("年龄");
                String stuClass =rs.getString("班级");
                sb.setStuAge(stuAge);
                sb.setStuClass(stuClass);
                sb.setStuName(stuName);
                sb.setStuNo(stuNo);
                sb.setStuSex(stuSex);
                students.add(sb);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return students;
        
        
        
        
    }
}

3.数据库连接池

1.简单操作

package com.softeem.dbcp;

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

import org.apache.commons.dbcp.BasicDataSource;

public class DbcpDemo {
    // 定义常量
    private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
    private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
    private static final String USERNAME = "softeem";
    private static final String PASSWORD = "softeem";

    public static BasicDataSource getDs() {
        // 创建一个数据源
        BasicDataSource ds = new BasicDataSource();
        // set
        ds.setDriverClassName(DRIVER);
        ds.setUrl(URL);
        ds.setUsername(USERNAME);
        ds.setPassword(PASSWORD);
        // 设置最大连接数
        ds.setMaxActive(20);
        return ds;
    }

    public static Connection getCon() {
        Connection connection = null;
        try {
            connection = getDs().getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    // 关闭 连接 ps rs
    public static void close(ResultSet rs, Statement st, Connection con) {
        try {
            if (rs != null)
                rs.close();
            if (st != null)
                st.close();
            if (con != null)
                con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

2.使用单例模式

package com.softeem.dbcp;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

public class SingleDbcp {

    // 定义常量
    private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
    private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
    private static final String USERNAME = "softeem";
    private static final String PASSWORD = "softeem";

    private static SingleDbcp singleDbcp;

    // 构造器私有化
    private SingleDbcp() {
    }

    public static synchronized SingleDbcp getSingleDbcp() {
        if (singleDbcp == null)
            singleDbcp = new SingleDbcp();
        return singleDbcp;
    }

    public BasicDataSource getDs() {

        // 创建一个数据源
        BasicDataSource ds = new BasicDataSource();
        // set
        ds.setDriverClassName(DRIVER);
        ds.setUrl(URL);
        ds.setUsername(USERNAME);
        ds.setPassword(PASSWORD);
        // 设置最大连接数
        ds.setMaxActive(20);
        return ds;
    }

    public Connection getCon() {
        Connection con = null;
        try {
            con = getDs().getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }

}

3.使用属性文件

3.1 写属性文件

DRIVER=oracle.jdbc.driver.OracleDriver
URL=jdbc:oracle:thin:@localhost:1521:orcl
USERNAME=scott
PASSWORD=a123

3.2 读取属性文件

package com.softeem.dbcp;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

public class ReadProperties {

    public static String url;
    public static String driver;
    public static String username;
    public static String password;
    // path 如果文件在工程下面 path=文件名
    private static FileInputStream fis = null;
    private static  Properties ps = null;
    
   static{
    // ctrl+shift+ y(小写 ) x(大写)
        try {
            fis = new FileInputStream("db.properties");
            ps = new Properties();
            ps.load(fis);
             url = ps.getProperty("URL");
             driver = ps.getProperty("DRIVER");
             username = ps.getProperty("USERNAME");
             password = ps.getProperty("PASSWORD");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
   }
}

3.3 用属性文件操作连接池

package com.softeem.dbcp;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

public class SingleDbcp2 {

    // 定义常量
    static BasicDataSource ds = null;
    static {

        // 创建一个数据源
        ds = new BasicDataSource();
        // set
        ds.setDriverClassName(ReadProperties.driver);
        ds.setUrl(ReadProperties.url);
        ds.setUsername(ReadProperties.username);
        ds.setPassword(ReadProperties.password);
        // 设置最大连接数
        ds.setMaxActive(20);
    }

    public Connection getCon() {
        Connection con = null;
        try {
            con = ds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }

}
时间: 2024-10-13 09:04:22

Java培训-Oracle学习【1】数据库连接的相关文章

鼎育教育成都java培训机构学习javascript注意的4个问题

鼎育教育成都java培训机构学习javascript注意的4个问题 1.关于javascript伪协议:通过一个链接调用javascript函数,比如: link example 作用:伪协议启用javascript,通过链接调用javascript函数 缺点:需要支持javascirpt功能的浏览器 不支持javascript浏览器:打开失败 支持但禁用javascript浏览器:do nothing 2.关于javascript内嵌事件,通过一些事件触发,比如onclick等,比如: lin

Java培训-ORACLE数据库学习【2】用户权限

连接用户:connect 用户名/密码; 创建用户:create user 用户名 identified by 密码; 授权:grant 权限 to 用户名; 注意:系统权限只能由DBA用户授出,普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收. 查询用户拥有的权限: 1.查看所有用户:   select * from dba_users;   select * from all_users;   select * f

Java培训学习需要什么基础?

随着互联网的飞速发展,其对相关人才的需求更是不断增加.高薪资高待遇吸引不少其它行业的人员也投身于此.作为最受企业欢迎Java语言,更是备受学员青睐.来千锋报名学习Java的不少学员都会问到同一个问题,学Java需要什么基础? 在回答这个问题前,我们先来简单的了解一下Java语言. Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥有全球最大的开发者

Java培训学习技巧分享

好多自学Java或者参加兄弟连Java培训班的同学都问小编:怎样才能学好Java,晋级大神?有什么好的方法借鉴?小编的一位朋友在兄弟连学习完做Java开发有关的工作,看看他当年是怎样学Java的? 爆料他的学习始末,供大家学习参考. 技巧一:找到一本合适的书或者老师来辅导你 Java系统是一项庞大的软件工程结晶,互联网已经进入大数据时代,海量的数据,需要安全保护.学习Java势在必行,不要认为自己有能力靠百度下载到的零散教程就能够学透它,起初总感觉自己的能力特别强,结果半年后就发现:不仅浪费的时

武汉java培训告诫各位:java学习不能盲目

想学习java编程语言,光靠java培训机构去学习是完全不够的,首先来说,这个想法是没有错的,是一个明智之选,但是java培训机构只能够为你提供一个学习的平台,最终的成果还是要靠你自己有没有认真的去学,武汉中软国际java培训的咨询老师告诫各位学员,不要盲目的去学习. 第一点:不经思考就问问题直接显示你的不认真 很多学员会很奇怪,学前武汉中软国际java培训的项目经理就告诉我们不懂就问,不要不好意思.因为java学习很怕把问题全部堆积到一起,项目经理老师担心学员们有问题不敢问,不好意思问,所以提

Java通用oracle数据库连接

Java中oracle数据库连接写一个通用类UBUtil(){} import java.io.InputStream; import java.sql.*; import java.util.Properties; public class DBUtil { private static Connection con; private static String url; private static String user; private static String pwd; public

揭秘java大数据学习路线图

很多的同学在学习JavaEE的路上都过得的是坎坷,可以说是夜以继日的敲代码在学习,却发现自己是事倍功半,有的时候遇到一个bug真的很难受,无限互联java大数据培训专家为大家整理了一篇很值得大家去借鉴的学习路线图文章,希望大家在学习的路上一能帆风顺! 一.Java的核心 这就是学习Java的基础,掌握程度的深与浅甚至直接影响后面的整个学习进程. Java的核心主要包括了几个部分: 一. java大数据学习路线图 1.初级的有语法基础.面向对象思想. 学习任何一门语言语法都是必须的,因为Java的

这是一名Java学者关于学习方向的建议

无可厚非,编程是一门艺术.但是辉煌的背后必须是一段辛苦的奋斗过程,而过程的引导方向就是最重要的一环.Java语言可谓是引领了编程的潮流,你会是怎样去学的呢? 这是一名Java学者的学习方向的建议 注:学习顺序只是参考,内容学习可以根据自己需求选择性学习. 别人的学习套路不一定适应你,因为每个人都是独一无二的. Java学习路线 第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架:(Java是一门注重基础的语言,基础语法非常重要) 第二阶段:java界面编程,包括AWT,

成都传智播客Java培训口碑做宣传

当今,信息技术日益成为现代组织实现创新和发展的重要手段,社会会对软件人才的需求持续增长,然而,一方面企业及组织聘不到合适的从业人员,另一方面又有众多的相关毕业生找不到合适的岗位.据此,成都传智播客特别推出了"Java开发工程师"培训班.欢迎有志从事且立足于软件业发展的学员报名参加本课程.我们期望这组课程将为您的职业生涯建立一个良好的开端和基础. [课程内容] 授课内容将结合目前业界主流的数据库系统.开发技术和环境分四个层次授课,第一个层次结合Oracle10i关系数据库管理系统讨论数据