zoukankan      html  css  js  c++  java
  • 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注入的侵入

  • 相关阅读:
    ASP.NET把客户机IP转换成真实地址(利用纯真 IP 数据库)
    关于分层走班教学的思考
    asp.net jQuery Ajax用户登录功能的实现
    C#判断网络地址 Url 是否存在的方法
    Asp.net获得远程网页源代码
    jQuery Ajax 调用aspx后台方法返回DataTable 的例子
    ASP.NET2.0中将GridView导出为Excel
    利用DataGrid显示某目录下的所有文件
    C#使用存储过程详细
    javascript获取当前日期时间
  • 原文地址:https://www.cnblogs.com/wlxslsb/p/9787651.html
Copyright © 2011-2022 走看看