• JDBC操作数据库的基本步骤:


    JDBC操作数据库的基本步骤:

        1)加载(注册)数据库驱动(到JVM)。

        2)建立(获取)数据库连接。

        3)创建(获取)数据库操作对象。

        4)定义操作的SQL语句。

        5)执行数据库操作。

        6)获取并操作结果集。

       7)关闭对象,回收数据库资源(关闭结果集-->关闭数据库操作对象-->关闭连接)。

    package com.yangshengjie.jdbc;  
    import java.sql.Connection;  
    import java.sql.DriverManager;  
    import java.sql.ResultSet;  
    import java.sql.SQLException;  
    import java.sql.Statement;  
      
    public class JDBCTest {  
        /** 
         * 使用JDBC连接并操作mysql数据库 
         */  
        public static void main(String[] args) {  
            // 数据库驱动类名的字符串  
            String driver = "com.mysql.jdbc.Driver";  
            // 数据库连接串  
            String url = "jdbc:mysql://127.0.0.1:3306/jdbctest";  
            // 用户名  
            String username = "root";  
            // 密码  
            String password = "mysqladmin";  
            Connection conn = null;  
            Statement stmt = null;  
            ResultSet rs = null;  
            try {  
                // 1、加载数据库驱动( 成功加载后,会将Driver类的实例注册到DriverManager类中)  
                Class.forName(driver );  
                // 2、获取数据库连接  
                conn = DriverManager.getConnection(url, username, password);  
                // 3、获取数据库操作对象  
                stmt = conn.createStatement();  
                // 4、定义操作的SQL语句  
                String sql = "select * from user where id = 100";  
                // 5、执行数据库操作  
                rs = stmt.executeQuery(sql);  
                // 6、获取并操作结果集  
                while (rs.next()) {  
                    System.out.println(rs.getInt("id"));  
                    System.out.println(rs.getString("name"));  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            } finally {  
                // 7、关闭对象,回收数据库资源  
                if (rs != null) { //关闭结果集对象  
                    try {  
                        rs.close();  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
                }  
                if (stmt != null) { // 关闭数据库操作对象  
                    try {  
                        stmt.close();  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
                }  
                if (conn != null) { // 关闭数据库连接对象  
                    try {  
                        if (!conn.isClosed()) {  
                            conn.close();  
                        }  
                    } catch (SQLException e) {  
                        e.printStackTrace();  
                    }  
                }  
            }  
        }  
    } 

     提示:关闭外部资源的顺序应该和打开的顺序相反,也就是说先关闭ResultSet、再关闭Statement、在关闭Connection。上面的代码只关闭了Connection(连接),虽然通常情况下在关闭连接时,连接上创建的语句和打开的游标也会关闭,但不能保证总是如此,因此应该按照刚才说的顺序分别关闭。此外,第一步加载驱动在JDBC 4.0中是可以省略的(自动从类路径中加载驱动),但是我们建议保留。

    常见面试题:

    1.Statement和PreparedStatement有什么区别?哪个性能更好?
    答:与Statement相比,①PreparedStatement接口代表预编译的语句,它主要的优势在于可以减少SQL的编译错误并增加SQL的安全性(减少SQL注射攻击的可能性);②PreparedStatement中的SQL语句是可以带参数的,避免了用字符串连接拼接SQL语句的麻烦和不安全;③当批量处理SQL或频繁执行相同的查询时,PreparedStatement有明显的性能上的优势,由于数据库可以将编译优化后的SQL语句缓存起来,下次执行相同结构的语句时就会很快(不用再次编译和生成执行计划)。

    为了提供对存储过程的调用,JDBC API中还提供了CallableStatement接口。存储过程(Stored Procedure)是数据库中一组为了完成特定功能的SQL语句的集合,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。虽然调用存储过程会在网络开销、安全性、性能上获得很多好处,但是存在如果底层数据库发生迁移时就会有很多麻烦,因为每种数据库的存储过程在书写上存在不少的差别。

    2.使用JDBC操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?
    答:要提升读取数据的性能,可以指定通过结果集(ResultSet)对象的setFetchSize()方法指定每次抓取的记录数(典型的空间换时间策略);要提升更新数据的性能可以使用PreparedStatement语句构建批处理,将若干SQL语句置于一个批处理中执行。

  • 相关阅读:
    MSSQL查询表占用空间
    JS字典
    匹配是否指定主域名
    站点文件删除不了提示权限不足
    事件委托发布-订阅
    微信中打开第三方应用
    以Spring Bean配置文件为例解释 xmlns,xmlns:xsi,xsi:schemaLocation
    Hdfs的读出机制
    Hdfs的写入机制
    spring常用注解的作用
  • 原文地址:https://www.cnblogs.com/xuxinstyle/p/9128869.html
Copyright © 2020-2023  润新知