美文网首页
JDBC入门

JDBC入门

作者: pianpianboy | 来源:发表于2018-03-10 17:40 被阅读0次

    JDBC入门

    时间:20180310


    1.1 简介
    使用java程序访问(操作)数据库(发送sql语句),这叫用到了jdbc技术。

    1.2 使用jdbc访问数据库的前提
    1)先登录数据库:

    • 数据库的主机地址(IP地址):
    • 端口
    • 数据库用户名和密码
    • 连接的数据库
      2)发送sql语句
    JDBC出现前的结构 JDBC出现后的结构

    使用JDBC链接数据库

    ·

    package gz.itast.a_jdbc;
    import java.sql.Connection;
    import java.sql.Driver;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Properties;
    
    /**
     * 使用jdbc技术链接数据库
     * @author mengjie
     *
     */
    public class Demo1 {
        //连接数据库的字符串,jdbc协议,类似于浏览器和服务器沟通的协议 (http协议)
        //jdbc协议+数据库协议+ip+port+连接的数据库名称
        private static String url = "jdbc:mysql://localhost:3306/day16"; 
        //用户名
        private static String user = "root";
        //密码
        private static String password = "root";
        public static void main(String[] args) throws SQLException, ClassNotFoundException {
            //t1();
            //t2();
            //t3();
            
            //主要流程
            //1.注册驱动程序(只注册一次)
            Class.forName("com.mysql.jdbc.Driver");
            //上述代码主要是为了调用Driver.class中代码(mysql具体实现类)
            //
            // Register ourselves with the DriverManager
            //
            //static {
                //try {
                    //java.sql.DriverManager.registerDriver(new Driver());
                //} catch (SQLException E) {
                    //throw new RuntimeException("Can't register driver!");
                //}
            //}
            
            //2.使用驱动管理类获取连接
            Connection conn = DriverManager.getConnection(url,user,password);
            System.out.println(conn);
        }
    
        private static void t3() throws ClassNotFoundException {
            /**
             * 反射:获取类的对象
             * 解决了t2中重复注册驱动程序的问题
             * 而且降低依赖程度(t2过度依赖com.mysql.jdbc.Driver() 类)
             */
            Class.forName("com.mysql.jdbc.Driver");//执行Driver类中的静态代码块
        }
        
        /**
         * 使用驱动管理类DriverManager,连接数据库
         * @throws SQLException
         */
        private static void t2() throws SQLException {
            Driver driver = new com.mysql.jdbc.Driver();//mysql //注册了一次驱动
    //      Driver driver2 = new com.oracle.jdbc.Driver();
            //1.注册驱动程序
            DriverManager.registerDriver(driver);//有注册了一次驱动,即重复注册了两次驱动
            //DriverManager.registerDriver(driver2);
            
            //2.获取连接数据库
            Connection conn = DriverManager.getConnection(url, user, password);//通过url识别需要连接数据库
            System.out.println(conn);
        }
    
        /**
         * 1) 直接使用驱动程序连接
         * @throws SQLException
         */
        private static void t1() throws SQLException {
            //1.创建驱动程序的实现类对象
            Driver driver = new com.mysql.jdbc.Driver();//新版本
    //      Driver driver = new org.gjt.mm.mysql.Driver();//旧版本
            
            Properties prop = new Properties();
            prop.setProperty("user", user);//用户名
            prop.setProperty("password", password);
            //2.连接数据库
            Connection conn = driver.connect(url, prop);
            System.out.println(conn);
        }
    }
    

    1.3 jdbc的api
    |- Driver接口: 驱动程序接口。
      |-Connection conn = connect() 用于连接数据库的方法。
    |-Connection 接口: 代表和数据库的连接。
      |-Statement createStatement() 创建Statement接口的对象。
      |-PreparedStatement prepareStatement(String sql) 创建PreparedStatement接口的对象。
      |-CallableStatement prepareCall(String sql) 创建CallableStatement接口的对象。

    |-Statement接口:用于执行静态SQL语句。
      |- int executeUpdate(String sql)执行DDL和DML语句(更新sql语句)比如INSERT\UPDATE\DELETE(DML),或者不返回任何内容的SQL语句(DDL)。
      |-ResultSet executeQuery(String sql) 执行DQL语句(查询sql语句)

      |-PreparedStatement接口:用于执行预编译的SQL语句
        |-int executeUpdate();执行DDL和DML语句(更新sql语句)
        |-resultSet executeQuery()执行DQL语句(查询sql语句)

            |-CallableStatement接口:用于执行存储过程的SQL语句
              |- ResultSet executeQuery()存储过程只能执行查询sql

    |-ResultSet接口:表示数据库结果集
      |-boolean next() 将光标移至下一行
      |-getXXX():获取结果集中的每列的值

    相关文章

      网友评论

          本文标题:JDBC入门

          本文链接:https://www.haomeiwen.com/subject/lygvfftx.html