zoukankan      html  css  js  c++  java
  • JDBC数据库连接JAVA和一些基本语句

    连接JDBC
     
        1)JDBC简介
            - JDBC就是Java中连接数据库方式
            - 我们可以通过JDBC来执行SQL语句。
     
        2)获取数据库连接
            - java.sql.Connection 数据库连接
            - 我们队数据库的一切操作都是从获取Connection开始
            - 获取数据库连接的四个参数:
                1.数据库的地址 url
                    语法:jdbc:子协议:厂商内容
                    MySQl的格式:jdbc:mysql://主机名:端口号/数据库名字
                    例子:jdbc:mysql://localhost:3306/test
     
                2.用户名 user 连接数据库使用的用户名
                3.密码 password 数据库的密码
                4.数据库驱动全类名 driverClass
     
            - 基本步骤:
                1.导入数据库驱动的jar包
                    mysql-connector-java-5.1.37-bin.jar
                2.准备四个参数
                    - url
                    - user
                    - password
                    - driverClass
                3.加载数据库驱动
                    Class.forName(driverClass)
                4.通过DriverManager来获取数据库连接   
                    static Connection getConnection(String url, String user, String password)           
     
            - 核心类:
                - java.sql.DriverManager
                    - 数据库驱动的管理器,负责加载数据库的驱动获取数据库连接
                    - static Connection getConnection(String url, String user, String password) 
                        - getConnection方法用来通过url地址,用户名,密码等参数来获取数据库连接的
     
                - java.sql.Connection
                    - 数据库连接
                    - Statement createStatement() 
                        - 创建一个Statement对象,通过Statement对象来执行SQL语句
     
                - java.sql.Statement
                    - SQL语句的执行器
                        - boolean execute(String sql) 
                            - 执行一条SQL语句,并返回一个布尔值,执行成功返回true,执行失败返回false。用的不多
                        - ResultSet executeQuery(String sql) 
                            - 执行查询的SQL语句,并返回一个结果集
                        - int executeUpdate(String sql) 
                            - 执行修改数据的SQL语句(增删改),并返回受影响的行数
     
                - java.sql.ResultSet
                    - 查询到的数据的结果集,我们通过JDBC查询数据库获得的数据,都封装在ResultSet中
                    - boolean next() 
                        - 控制光标向下移动一行,如果光标当前位置是afterLast则返回false,告诉你没数据了,就别读了。
                            如果光标移动以后,没有在afterLast则返回true,可以读取数据。
     
                    - 在ResultSet有很多getXxx(int),比如getString(),getInt(),getByte()。
                        通过这些方法可以读取当前行的数据,它们需要一个int值作为参数,
                            int指的是读取数据的列数。
                        列数是从1开始的。
     
                    - 在ResultSet中还有很多getXxx(String),它和上边的方法的作用一致,
                        只不过它们需要的都是String类型的参数,参数代表的是当前的列名,
                            比如:我们要获取id的值
                                getInt("id")
                            要获取name的值
                                getString("name")
                        注意:如果查询的SQL使用了别名,则列名以别名为准。
     
        3)数据的增删改
            //创建一个SQL执行器
            Statement stat = conn.createStatement();
     
            //创建一个SQL语句
            String sql = "INSERT INTO t_stu(`name` , age) VALUES('沙僧',28)";
     
            //执行SQL语句
            //executeUpdate用来执行一条修改SQL的语句
     
            //它需要一个String类型sql作为参数,并会返回一个int型的值,该值表示SQL语句执行以后影响到的行数
            int count = stat.executeUpdate(sql);
     
        4)数据的查询
            //创建Statement对象
            Statement stmt = conn.createStatement();
            //创建一个SQL语句
            String sql = "SELECT id, name sname, age FROM t_stu WHERE id=2";
            //执行查询
            ResultSet rs = stmt.executeQuery(sql);
            //控制光标下移一行
            //如果当前行有数据,则读取
            if(rs.next()){
     
                //获取id,name,age
                int id = rs.getInt("id");
                String name = rs.getString("sname");
                int age = rs.getInt("age");
     
                System.out.println(id+"--"+name+"--"+age);
            }
     
            > 查询操作和修改的主要不同的是,查询使用executeQuery(),
                它会返回ResultSet结果集,我们需要对结果集进行读取。
     
            > 当我们只需要读取一个数据时,用if。
                当需要读取全部数据时,用while
     
            > 代码的规范:
                - Connection、Statement、ResultSet,这些资源都是需要和数据建立连接的
                    这些资源我们并不是总需要使用,当我们不适用这些资源,需要将这些资源关闭。
                - 关闭资源顺序:
                    从后往前关:
                        先关 ResultSet
                        在关 Statement
                        最后关 Connection
                - 示例代码:
                    //定义三个变量
                    Connection conn = null;
                    Statement stmt = null;
                    ResultSet rs = null;
     
                    try{
     
                    }catch(Exception e){
                        e.printStackTrace();
                    }finally{
     
                        if(rs!=null){
                            //关闭ResulSet
                            try {
                                rs.close();
                            } catch (SQLException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
     
                        if(stmt != null){
                            try {
                                stmt.close();
                            } catch (SQLException e) {
                                e.printStackTrace();
                            }
                        }
     
                        if(conn != null){
                            try {
                                conn.close();
                            } catch (SQLException e) {
                                e.printStackTrace();
                            }
                        }
     
                    }
     
    DAO(Data Access Object) 数据访问对象:
        在Java中使用DAO类,来去和数据库交互,而其他类不再需要编写JDBC相关的代码,
            而是直接调用DAO。
        在实际上开发中,我们所有的JDBC相关的代码都应该写在DAO中,
            java.sql这个包下的内容不应该出现在DAO以外的地方
     
        t_user
     
            CREATE TABLE t_user(
                id INT PRIMARY KEY AUTO_INCREMENT,
                username VARCHAR(100),
                `password` VARCHAR(100),
                email VARCHAR(100),
                nickname VARCHAR(50)
            )
     
        创建UserDao(负责User对象和数据库相关的操作)   
     
            User getUserByUsername(String username) --> 根据用户查找用户
     
            int saveUser(User user); --> 将用户对象插入进数据库
     
            User getUserByUsernameAndPassword(String username , String password) --> 根据用户名和密码查找用户
     
        登录:
            登录实际上就是这么一条SQL语句:
                SELECT * FROM t_user WHERE username='' AND password=''
     
  • 相关阅读:
    Project Euler Problem 26-Reciprocal cycles
    Project Euler Problem 24-Lexicographic permutations
    Project Euler Problem 23-Non-abundant sums
    AtCoder Beginner Contest 077 D Small Multiple(最短路)
    浮点数表示及其实现
    ACM water
    Makefile经典教程(掌握这些足够)
    Linux makefile 教程 非常详细,且易懂
    C/C++中const的用法 分类: C/C++ 2015-07-05 00:43 85人阅读 评论(0) 收藏
    自动化测试工具QTP的使用实例 分类: 软件测试 2015-06-17 00:23 185人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/WangKaitao/p/7352661.html
Copyright © 2011-2022 走看看