• 0、原生jdbc工厂类


    一、代码结构

    二、JDBCFactory.java

    package com.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
    
    public class JDBCFactory {
        //定义静态属性
        private static String DRIVER;
        private static String URL;
        private static String USERNAME;
        private static String PASSWORD;
        
        //静态代码块,用来加载资源文件中的信息,且只会加载一次
        static{
            //1、加载数据配置文件(资源对象)
            Properties pro=new Properties();
            //2、将资源读取成字节输入流
            InputStream is=JDBCFactory.class.getResourceAsStream("jdbc.sqlserver.properties");
            try {
                //3、通过资源对象加载字节输入流
                pro.load(is);
                //4、资源对象通过key来获取对应的文件中的value
                DRIVER=pro.getProperty("jdbc.driver");
                URL=pro.getProperty("jdbc.url");
                USERNAME=pro.getProperty("jdbc.username");
                PASSWORD=pro.getProperty("jdbc.password");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        /**建立数据库连接的静态方法
         * @return 如果有异常,则会返回null
         */
        public static Connection getConn(){
            Connection ct=null;
            try {
                //1、加载驱动
                Class.forName(DRIVER);
                //2、得到连接
                ct=DriverManager.getConnection(URL,USERNAME,PASSWORD);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return ct;
        }
        
        /**
         * 静态方法,用来关闭资源,注意关闭顺序,否则可能报错
         */
        public static void closeAll(Connection ct,Statement st,ResultSet rs){
            if(rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(st!=null){
                try {
                    st.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(ct!=null){
                try {
                    ct.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    
    }

    三、jdbc.sqlserver.properties

    jdbc.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
    jdbc.url=jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=spdb1
    jdbc.username=sa
    jdbc.password=m123

    四、TestClass.java

    package com.test;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Timestamp;
    
    
    public class TestClass {
        Connection ct;
        PreparedStatement ps=null;
        ResultSet rs;
        
        public static void main(String[] args) {
            TestClass tc=new TestClass();
            tc.ct=JDBCFactory.getConn();
            String sql="insert into student_table(stuname,stuage,stusex,stubirth,stusubj) values(?,?,?,?,?)";
            try {
                tc.ps=tc.ct.prepareStatement(sql);
                tc.ps.setString(1, "哈哈");
                tc.ps.setInt(2, 20);
                tc.ps.setString(3, "男");
                tc.ps.setTimestamp(4, null);
                tc.ps.setString(5, "呵呵");
                tc.ps.executeUpdate();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                JDBCFactory.closeAll(tc.ct, tc.ps, null);
            }
        }
    }

    五、说明

    jbdc的常用API:
    1.Connection:数据库的链接对象
    2.statement:数据库sql执行对象
    3.preparedStatment:sql的预编译处理对象,是statement子接口
    4.resultset:返回查询的结果集

    jdbc开发步骤:
    1.在项目中加入驱动jar包
    2.写jdbc链接代码

    preparedStatment 预编译sql命令接口:
    1.会对sql语句进行编译检查,可以用参数占位符的方式编写sql语句
    2.作用:比普通statement接口执行效率更高。可以防止sql注入的侵入

  • 相关阅读:
    POJ 2236
    HDU 6027
    FZU 2278
    FZU 2282
    python之----------字符编码的原理
    python可变数据类型和不可变数据类型
    python的运算符和while循环
    python之字符串的切片
    python数据类型补充
    python的数据类型
  • 原文地址:https://www.cnblogs.com/wlxslsb/p/9787651.html
Copyright © 2020-2023  润新知