zoukankan      html  css  js  c++  java
  • Java数据库编程

    JDBC(Java Database Connectivity):是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类库(位于java.sql和javax.sql包中)。利用JDBC,可以                                                      用java编写程序,实现与特定的数据库连接,向数据库发送SQL语句,实现对数据库的特定操作,并对数据库返回结果进行处理。

    1.JDBC编程六个步骤 :(1).根据应用程序所用数据库,选择JDBC驱动程序类型。

                                  (2).连接到数据库,得到Connection对象。

                                  (3).通过Connection创建Statement对象。

                                  (4).使用Statement对象提交SQL语句。

                                  (5).操作结果集。

                                 (6).回收数据库资源。

    2.选定JDBC驱动程序类型 (1).LDBC-ODBC桥加ODBC 驱动程序

                                     (2).本地API和部分基于Java的驱动程

                                     (3).为数据库中间件实现的纯Java驱动程序

                                     (4).本地协议纯Java驱动程序(性能最好)

    3.JDBC连接代码示例:

    package com;
    
    import java.io.IOException;
    import java.io.InputStream;
    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 java.util.Properties;
    
    /**
     * JDBC辅助类
     * 
     * @author
     *
     */
    public class JdbcUtil {
    
        /* 最好使用配置文件保存 */
        private static String driver; // 驱动
        private static String url; // 连接字符串
        private static String user; // 用户名
        private static String password; // 密码
    
        private static Connection conn; // Connection对象
        private static PreparedStatement pstmt; // PreparedStatement对象
        private static ResultSet rs; // ResultSet对象
    
        /* 加载数据库驱动 */
        static {
            loadProperties();
            try {
                Class.forName(driver);
            } catch (ClassNotFoundException e) {
                throw new RuntimeException(e);
            }
        }
    
        private JdbcUtil() {
        }
    
        /**
         * 读取配置文件
         */
        private static void loadProperties() {
            Properties properties = new Properties();
            InputStream in = Thread.currentThread().getClass()
                    .getResourceAsStream("/com/lovo/day2/jdbc.properties");
            try {
                properties.load(in);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            password = properties.getProperty("password");
        }
    
        /**
         * 获取数据库连接
         * 
         * @return 连接对象
         */
        public static Connection getConnection() {
            try {
                return conn = DriverManager.getConnection(url, user, password);
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * 释放ResultSet资源
         * 
         * @param rs
         */
        public static void close(ResultSet rs) {
            try {
                if (null != rs)
                    rs.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * 释放ResultSet资源
         * 
         * @param rs
         */
        public static void close(Statement stmt) {
            try {
                if (null != stmt)
                    stmt.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * 释放ResultSet资源
         * 
         * @param rs
         */
        public static void close(Connection conn) {
            try {
                if (null != conn)
                    conn.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * 释放所有资源
         */
        public static void close() {
            try {
                if (null != rs && !rs.isClosed()) {
                    rs.close();
                }
                rs = null;
            } catch (SQLException e) {
                throw new RuntimeException(e);
            } finally {
                try {
                    if (null != pstmt && !pstmt.isClosed()) {
                        pstmt.close();
                    }
                    pstmt = null;
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                } finally {
                    try {
                        System.out.println(conn);
                        if (null != conn && !conn.isClosed()) {
                            conn.close();
                        }
                        conn = null;
                    } catch (SQLException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        }
    
        /**
         * 执行增删改
         * 
         * @param sql
         *            待执行的SQL语句
         * @param params
         *            SQL语句中?占位符的参数
         * @return 受影响的行数
         */
        public static int executeUpdate(String sql, Object... params) {
            try {
                if (null == conn)
                    getConnection();
                pstmt = conn.prepareStatement(sql);
    
                if (null != params) { // 为SQL语句中?占位符设置参数
                    for (int i = 0; i < params.length; i++) {
                        pstmt.setObject(i + 1, params[i]);
                    }
                }
    
                return pstmt.executeUpdate();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    
        /**
         * 实现查询
         * 
         * @param sql
         *            待执行的查询SQL语句
         * @param params
         *            SQL语句中?占位符的参数
         * @return 查询结果集ResultSet对象
         */
        public static ResultSet executeQuery(String sql, Object... params) {
            try {
                if (null == conn)
                    getConnection();
                pstmt = conn.prepareStatement(sql);
    
                if (null != params) { // 为SQL语句中?占位符设置参数
                    for (int i = 0; i < params.length; i++) {
                        pstmt.setObject(i + 1, params[i]);
                    }
                }
    
                return rs = pstmt.executeQuery();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
  • 相关阅读:
    基于Visual C++2013拆解世界五百强面试题--题13-找最大公共子字符串
    基于Visual C++2013拆解世界五百强面试题--题12-进制转换
    Color颜色对照表
    根据选择打开相应的程序
    复制一个5G文件只需要两秒,全网最牛方法!
    判断一个男人穷还是富,只看这几点!
    判断一个男人穷还是富,只看这几点!
    判断一个男人穷还是富,只看这几点!
    16年国庆假期期间兼职所悟
    16年国庆假期期间兼职所悟
  • 原文地址:https://www.cnblogs.com/moshengren-java/p/4510166.html
Copyright © 2011-2022 走看看