连接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=''
 

JDBC数据库连接JAVA和一些基本语句的更多相关文章

  1. JDBC 数据库连接 Java操作数据库 jdbc快速入门

    JDBC基本概念 Java DataBase Connectivity 数据库连接 java操作数据库 本质上(sun公司的程序员)定义的一套操作关系型数据库的规则 既接口  更新内容之前 代码 pa ...

  2. Java jdbc数据库连接池总结!(转)

    1. 引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机 应用程序已从传统的桌面应用转到Web应用.基于B/S(Browser/Server)架构的 ...

  3. JDBC(Java Data Base Connectivity,java数据库连接)

    JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...

  4. 【学习笔记】JDBC数据库连接技术(Java Database Connectivity)

    一.JDBC简介 Java是通过JDBC技术实现对各种数据库的访问的,JDBC是Java数据库连接技术的简称.它可以把数据持久保存,是一种持久化机制. 1.持久化 持久化就是将程序中的数据在瞬时状态和 ...

  5. Java自学-JDBC 数据库连接池

    数据库连接池 与线程池类似的,数据库也有一个数据库连接池. 不过他们的实现思路是不一样的. 本章节讲解了自定义数据库连接池类:ConnectionPool,虽然不是很完善和健壮,但是足以帮助大家理解C ...

  6. JDBC:(java database Connection) java数据库连接。

    JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC连接步骤: 1.先导入jar包,把jar放入到工程下并 ...

  7. JAVA之JDBC数据库连接池总结篇

    JDBC数据库连接池 一.JDBC数据库连接池的必要性 二.数据库连接池技术 三.多种开源的数据库连接池 3.1 C3P0数据库连接池 3.2 DBCP数据库连接池 3.3 Druid(德鲁伊)数据库 ...

  8. JAVA基础知识之JDBC——JDBC数据库连接池

    JDBC数据库连接池 数据库的连接和关闭是很耗费资源的操作,前面介绍的DriverManager方式获取的数据库连接,一个Connection对象就对应了一个物理数据库连接,每次操作都要打开一个连接, ...

  9. JDBC数据库连接池原理

    JDBC是java数据库连接的简称.它是一种用于实行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成.其相关的API都在java.sql.*包下 ...

随机推荐

  1. 奇舞js笔记——第0课——如何写好原生js代码

    摘要 1.好的代码职责要清晰,javscript不要用来操作样式: 2.API要设计的合理:通用性,适度的抽象(数据抽象,过程抽象),可扩展性: 3.效率问题:用好的.合适的算法(前端程序员要把自己当 ...

  2. 谈谈webpack 的优势

    其优势主要可以归类为如下几个: 1. webpack 是以 commonJS 的形式来书写脚本滴,但对 AMD/CMD 的支持也很全面,方便旧项目进行代码迁移. 2. 能被模块化的不仅仅是 JS 了. ...

  3. Jenkins+Git配置

    Jenkins+Git配置 一.GitHub上配置 前提:Jenkins能正常打开 将本地文件上传到GitHub上:进入终端 cd Documents cd project git clone htt ...

  4. PHP ORM笔记

    1.ORM是什么? 经常听到程序员的面试中会问到对ORM的了解,但是一直不知道ORM是个什么鬼东西,知道有一天在百度上顺带看到才发现ORM就是我们平时在框架中一直使用的数据库对象操作.ORM(Obje ...

  5. Hadoop hdfs上传文件 权限问题

    问题描述: hadoop在虚拟机中的linux系统下 在本地通过eclipse编写代码把本地文件上传至hadoop平台的指定目录 代码如下: @Test public void upload() th ...

  6. 项目DEMO下载

    1.mybatis_generator自动生成代码demo github项目地址:https://github.com/JsonShare/mybatis_generator 2.设计模式解密系列示例 ...

  7. 【SpringMVC】使用SpringMVC进行上传文件!

    写在前面: 之前在上传文件的时候,使用的是commons-file-upload这个插件,非常方便,能控制每个文件的大小,总共大小,缓存,以及支持多个文件的同时上传,但是写一次上传文件的后台代码量太大 ...

  8. 微信小程序开发基础知识总结

    微信小程序在无论在功能.文档及相关支持方面,都是优于前面几种微信账号类型,它提供了很多原生程序才有的接口,使得我们的小程序在很多方面突破H5页面应用的限制,更加接近原生程序的功能,因此微信小程序具有很 ...

  9. Nlpir Parser敏感词搜索灵玖语义技术应用

    近年来随着网络技术的飞速发展和用户的剧烈增长,网络传输数据量越来越大,网络用语越来越趋于多样化.如何快速的屏蔽用户的不当言论.过滤用户发表内容中的非法词汇已成为关键词匹配领域的一项重大难题. 目前主要 ...

  10. 18. leetcode 387. First Unique Character in a String

    Given a string, find the first non-repeating character in it and return it's index. If it doesn't ex ...