JDBC

Posted jiayiblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC相关的知识,希望对你有一定的参考价值。

一.JDBC简介

1.什么是JDBC?

  JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

  开发公司:sun

2.JDBC可以用来做什么?

  简单地说,JDBC 可做三件事:与数据库建立连接、发送、操作数据库的语句并处理结果。

3.JDBC的优劣势?

  优点:直接底层操作,提供了很简单、便捷的访问数据库的方法,跨平台性比较强。因为是底层的操作,所以访问速度相比较快。

  缺点:sql语句修改,需要重新编译java代码,不利于系统维护。JDBC操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致。

     需要及时处理异常并正确关闭数据源。

4.JDBC的工作原理(转自百度百科)

            技术图片

 

 

    • JDBC接口(API)包括两个层次:
      • 面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。
      • 面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。
    • JDBC驱动程序:各个数据库厂商根据JDBC的规范制作的 JDBC 实现类的类库
      • JDBC驱动程序总共有四种类型:
        第一类:JDBC-ODBC桥。
        第二类:部分本地API部分Java的驱动程序。
        第三类:JDBC网络纯Java驱动程序。
        第四类:本地协议的纯 Java 驱动程序。

二. JDBCD应用 

1.添加jar包:方式一:在pom.xml中<dependencies></dependencies>节点下添加依赖(https://mvnrepository.com/artifact/mysql/mysql-connector-java),<dependency>

      方式二; 或者官网上手动下载mysql-connector-java jar包  在项目WEB-INF下创建lib文件将jar包导入然后Add library

2.

public class NewsDao 
    //数据库URL
    public static final String URL = "jdbc:mysql://localhost:3306/kgcnews";
    //数据库用户名
    public static final String USER = "root";
    //数据库密码
    public static final String PASSWORD = "123456";
    //数据库连接对象
    Connection conn =null;
    //SQL执行对象
    Statement stament = null;
    //结果集对象
    ResultSet rs = null;

    //连接数据库方法
    public Connection connection()
        try 
            //1.加载驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            //2. 获得数据库连接
            conn = DriverManager.getConnection(URL, USER, PASSWORD);
            System.out.println("成功连接数据库");
         catch (ClassNotFoundException e) 
            System.out.println("数据库异常");
            e.printStackTrace();
         catch (SQLException e) 
            System.out.println("数据库异常");
            e.printStackTrace();
        
        return conn;
    
    //查询方法
    public ResultSet query(String sql) throws SQLException 
        //获取数据库连接线程
        connection();
       // 3.通过connection 获取一个sql语句操作对象statement
        stament = conn.createStatement();
       // 4.执行sql获得结果
        rs = stament.executeQuery(sql);
        return rs;

    

    //关闭资源
    public boolean destory() throws SQLException 
        if(rs!=null)
            try 
                rs.close();
             catch (SQLException e) 
                e.printStackTrace();
                return false;
            
        
        if(stament!=null)
            try 
                stament.close();
             catch (SQLException e) 
                e.printStackTrace();
                return false;
            
        
        if(conn!=null)
            try 
                conn.close();
             catch (SQLException e) 
                e.printStackTrace();
                return false;
            
        
        return true;

    

    public static void main(String[] args) throws SQLException 
     String sql = "SELECT `userName`,`password` FROM `news_user` WHERE `id` = 4";
   String sql2 = "SELECT `title`,`createDate` FROM `news_detail`";
  NewsDao nd = new NewsDao();
  Connection conn = nd.connection();
  ResultSet rs = nd.query(sql2);
  //查询后操作结果集,得到相对应的数据
   while(rs.next())
  System.out.println(rs.getString("title")+"-"+rs.getString("createDate"));
  
  nd.destory();
  

          



  



 

以上是关于JDBC的主要内容,如果未能解决你的问题,请参考以下文章

面试常用的代码片段

mysql jdbc源码分析片段 和 Tomcat's JDBC Pool

JDBC操作数据库之查询数据

如何在片段中填充列表视图?

在 myeclipse中进行连接sql server的测试

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段