JDBC开发步骤

##JDBC开发步骤
    1,创建数据库
        a:SQLyang连接数据库,但不选择任意一个具体数据库
        b:创建一个新的数据库,库名叫mydb
            #创建数据库
                CREATE DATABASE MYDB;

        c:创建分类表
            #创建分类表
                CREATE TABLE USER(
                    CID INT PRIMARY KEY AUTO_INCREMENT,
                    NAME VARCHAR(20)
                    )
            

        d:初始化数据
            #初始化数据
                INSERT INTO USER VALUES(NULL,'遇过');
                INSERT INTO USER VALUES(NULL,'玉果');
                INSERT INTO USER VALUES(NULL,'余果');

    2,创建Java项目准备环境
        a:在学习JDBC阶段,我们所使用的都是Javase项目,并非web项目
        b:检查Eclipse配置
            编码格式为UTF_8
            单元测试可以使用
        c:导入jar
            创建专门用于存放jar包的文件夹
            mySQL的jar包(驱动):mysql-connector-java-5.1.28-bin.jar
            将jar包手动buildpath
    3,完成Java代码
        a:注册SQL驱动
            Class.forName("com.mysql.jdbc.Driver")
        b:通过DriverManger来获取到数据库的链接
            # 准备工作
                a:url :数据库的位置   user:数据库的登录用户名  password:数据库登录时所需的密码
                    String url = "jdbc:mysql://localhost:3306/MYDB";
                    String user = "root";
                    String password = "99312";
                b:通过DriverManager来获取链接对象
            Connection conn = DriverManager.getConnection(url,user,password);
        d:通过链接对象获取SQL发射器
            PrepareStatement pre = conn.PrepareStatement("secelt * from user");
        e:执行发射器获取结果集
            ResultSet res = pre.executQuery();
        f:处理结果集

            a、ResultSet是SQL结果集类型,类似于迭代器

            b、方法说明:
                -next:获取到下一条数据
            while( res.next ){
                int col1 = getInt(1);
                String col2 = getString(2);
                System.out.println(col1+":"+col2);
                System.out.println("=======");
            }

        f:关闭资源
            所需关闭资源:结果集对象,发射器对象,连接对象
            res.close;
            pre.close;
            conn.close;


##JDBC步骤与对象详解:
    1.注册mysql驱动
    做什么:让jdbc使用mysql的驱动jar
    固定代码:Class.forName("com.mysql.jdbc.Driver");
    数据库驱动类的名称:com.mysql.jdbc.Driver是固定的,每个数据库厂商提供不同

    2.获取连接对象
    做什么:获得连接对象,与数据库连接上
    固定代码:
        java.sql.Connection conn = DriverManager.getConnection(url,user,password);
    参数解释:
        url:jdbc:mysql://127.0.0.1:3306/mydb    数据库位置
        user:root                 数据库用户名
        password:123                 数据库密码

    3.通过连接对象获取SQL的发射器
    做什么:准备发出SQL代码
    固定代码:
        String sql = "某SQL语句";
        PreparedStatement pst = conn.prepareStatement(sql);

    4.发射器执行SQL语句(PreparedStatement:执行sql的sql发射器对象)
    做什么:发送SQL语句
        a、查询语句,使用ResultSet executeQuery(String sql); --执行select语句,会返回结果集
            ResultSet result = prep.executeQuery();
        b、增、删、改用同一个语句int executeUpdate(String sql); --执行insert update delete语句,不会返回结果集
            prep.executeUpdte();
    
    5.如果是查询语句,则需要处理结果集(ResultSet:结果集对象)
    做什么:从结果集对象中获取数据
    结果集常用方法:

        -next:获取到下一条数据,有下一条返回true,没有下一条返回false

        -getString(列序号):获取该行数据第几列(该列必须为字符串)
        -getInt(列序号):获取该行数据第几列(该列必须为整数)
        -getDouble(列序号):获取该行数据第几列(该列必须为小数)
        -getObject(列序号):获取该行数据第几列(该列为任意类型)

        -getString(列名):获取该行数据指定列名的值(该列必须为字符串)
        -getInt(列名):获取该行数据指定列名的值(该列必须为整数)
        -getDouble(列名):获取该行数据指定列名的值(该列必须为小数)
        -getObject(列名):获取该行数据指定列名的值(该列为任意类型)
        
    结果集固定格式:

        while(result.next()) {  //判断是否有下一条数据,并且如果有下一条数据,将指向下一条数据
            String cid = result.getString(1);
            String cname = result.getString(2);
            System.out.println("cid:"+cid+"-------cname:"+cname);
            System.out.println("=============================================");
        }
    
    6.释放资源
    做什么:将数据库的资源释放出来,供其他数据库的使用者使用。
    需要关闭的资源:
        结果集ResultSet、发射器PrepareStatment、连接对象Coonnection

##封装JDBC工具类:为了加强代码的复用性,使用JDBC注册驱动,获取连接对象,关闭资源
    package myJDBC;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;

    public class JDBCUtils {
        //后续,这些常量可以从配置文件中读取
        private static String URL = "jdbc:mysql://localhost:3306/mydb";
        private static String USER = "root";
        private static String PASSWORD = "123";
    //注册驱动,只需要执行一次,放到静态代码块中
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
    //获取连接
    public static Connection getConn() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }
    //关闭资源
    public static void closeResource(Connection conn,PreparedStatement pst,ResultSet rs) {
        //先滤空,不为空再关闭
        if(rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        if(pst!=null) {
            try {
                pst.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        if(conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }
}


    preparedStatement带参数使用
        概念:preparedStatement预编译对象,用于发出SQL语句,得到SQL的执行结果
        特点:
            提高性能
            完成预编译动作(将SQL中的?换位其他数据)
            能过滤用户输入的值
            避免SQL注入类似的问题,提高安全性

    带参数操作:
        可以将SQL一些数据作为参数传递,先使用?占位,再使用实际值替换?
        
    步骤:
        1、使用带?的SQL创建preparedStatement对象
        2、将?替换成实际值
        3、发射对应的完整SQL语句,得到结果
    

##连接池
    用于提升性能,这里使用druid-1.1.9.jar
    使用连接池,重构JDBC工具类

    步骤:
        1、导入druid-1.1.9.jar
        2、获取配置文件当中连接池的配置数据
            工具类名称:DruidUtil
            static{
                //读取配置文件信息为输入流对象
                InputStream is = DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties");
                //将配置文件按信息的输入流对象 读取到Properties中
                Properties prop = new Properties();
                prop.load(is);
                //获得连接池,调用DruidDataSourceFactory德鲁伊连接池工厂类,创建连接池,使用Properties中的内容
                dataSource = DruidDataSourceFactory.createDataSource(prop);
            }    
            //====以下为配置文件信息============================================
            配置文件名称:Druid.properties    位置:src根目录下
            driverClassName = com.mysql.jdbc.Driver //驱动名称
            url = jdbc:mysql://localhost:3306/mydb  //连接URL
            username = root                //用户名
            password = 123                //密码

            initialSize = 5                //初始连接数
            maxActive = 10                //最大并行连接数
            minIdle = 3                //最小空闲数
            maxWait = 60000                //最大等待时间

        3、获取连接方法实现
            声明:
                public static Connection getConnection()
            内容实现:
                在成员变量位置,定义DataSource(连接池)成员变量,方便本方法的使用
                DataSource dataSource;
                在本方法中,使用成员部分的连接池对象,获取连接,并返回
                return dataSource.getConnection();
                
        4、关闭资源方法实现
            与之前相同,此次关闭连接,不再是真正关闭,而是归还到了连接池中
        
           
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值