• JDBC--Sql


    今天的状态不怎么好,但是还是依旧来复习一下用java怎么来连接数据库

    首先 原理比较简单 -- 就是java APP 通过驱动程序去连接数据库,当然数据库也分成oracle,microsoft的sqlserver以及mysql,这个驱动程序其实就是java代码,但是不得不考虑一个问题,怎么来实现这个驱动程序就可以连上数据库了呢?一般来说,登入数据库的应用,开始的界面都会填写连接的ip地址,user信息,以及password,有些还可以直接填到相应的某个具体的数据库,所以这些信息也是我们要在驱动程序里面写到的。

    其次,来聊聊一下具体怎样实现

    有了上面的信息后,其实就可以写驱动程序了,但是程序员的维护部分就会很多了,既有java APP部分和java连接各种不同的数据库的代码,要是数据库底层变了,我们还得跟着你们变,简直不是人啊。。。所以,一流的sun公司就不干了,他们想着我是老大,凭什么要根据你们数据库的不同来维护不同的实现类代码,所以就自己定义了一套通用的java语言实现的连接不同数据库的接口规范--JDBC

    这样就让他们这些数据库厂家自己用java来接一套实现驱动程序的类,来实现我们的sql的接口,这样就很棒了,我们要维护的代码就只有我们自己的javaAPP和这套规范,你们数据库自己要改变,那也请你们自己改好驱动程序,跟我们没有关系。。。

    下面就是代码的实现

    package util;
    
    import java.sql.*;
    import java.util.Properties;
    /*
     * 这个是jdbc工具类
     * */
    
    
    import org.junit.Test;
    
    public class jdbcUtil {
        private static String url = null;
        private static String driverClass = null;
        private static String user = "sa";
        private static String password = "wangpass";
        private Properties proper = new Properties();
        /**
         * 静态代码块中(只加载一次)
         */
        static{
            try {
                url = "jdbc:sqlserver://localhost:1433;DatabaseName=团队网站";
                driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
            
                //注册驱动程序 -- 加载类的时候,注册的静态代码块就是在执行了
                /* class sqlser.jdbc.Driver implements Driver{
                        static try{
                            java.sql.DriverManager.registerDriver(new Driver());
                        }catch(Exception e){
                            throw new RuntimeExceptio("can't register driver");
                        }
                }*/
                Class.forName(driverClass);
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("驱程程序注册出错");
            }
        }
        
        /**
         * 抽取获取连接对象的方法
         */
        public static Connection getConnection(){
            try {
                Connection conn = DriverManager.getConnection(url,user,password);
                return conn;
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
        
        
        /**
         * 释放资源的方法
         */
        public static void close(Connection conn,Statement stmt){
            if(stmt!=null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
                }
            }
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
                }
            }
        }
        
        public static void close(Connection conn,Statement stmt,ResultSet rs){
            if(rs!=null)
                try {
                    rs.close();
                } catch (SQLException e1) {
                    e1.printStackTrace();
                    throw new RuntimeException(e1);
                }
            if(stmt!=null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
                }
            }
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    throw new RuntimeException(e);
                }
            }
        }
        @Test
        public void test(){
        
            Connection conn = getConnection();
            PreparedStatement stmt = null;
            ResultSet rs = null;
            String sql = "select * from 成员表";
            try {
                stmt = conn.prepareStatement(sql);
                rs = stmt.executeQuery();
                while(rs.next()){
                    System.out.println(rs.getString("学号"));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                try {
                    rs.close();
                    stmt.close();
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }        
               
            }
        }
    }

    上述的代码中我稍微解释一下 ;首先准备工作你的要做吧,写好相应的连接哪个数据库的ip,userName,password(后面两个也可以写入Properties里面),然后对于url,有统一的规范 url =  "jdbc:数据库子协议://主机端口/具体数据库"

    其次就是你得去注册一个驱动,在我们java里面是没有java实现数据库连接的实现类的,这个前面讲过了,没必要,而且维护太烦,我们只有接口,所以我们是要去注册一个驱动的,你们是哪个数据库要链接我,我就注册相应的driver(驱动),当然注册方法也有很多,但是由于很多数据库的java驱动程序中的实现类driver,都有一个静态的实现就是一旦new了一个新的driver就直接注册了,上面我也有写出来,所以我们就没必要在写一次注册的语句了,真正要我们写得就是new 出来一个新的drver,但其实也没必要new,直接用反射机制。这样就注册好了。然后我们java有一个driverManager的类来管理这些驱动,就用他来连接,这样就会得到一个Connection的对象,这样就已经连接好了你要连的数据库。

    注解一下上面我主要是用的sqlserver的数据库,然后还写了一些关掉链接,释放资源的方法,完全可以当作一个工具类来使用了。。。

    今天就这样吧~下次继续看看数据库连好后的操作

  • 相关阅读:
    git 忽略文件夹权限
    文字特效-shine.js-阴影随动
    微信小程序scroll-view中的坑(因为动态设置高度导致无法下拉)
    gitlab 403 forbidden 报错解决
    Vue子组件调用父组件的方法
    github的小笔记
    windows win10 重装系统 提示不是gpt分区不能安装
    使用html5播放m3u8直播源
    youtube-dl 使用简介
    ABAP RSA 加密
  • 原文地址:https://www.cnblogs.com/AmoryWang-JavaSunny/p/6481368.html
Copyright © 2020-2023  润新知