蓝旭第六周后端预习作业:

本文介绍了JDBC的基本概念和作用,详细阐述了如何通过Java实现JDBC连接数据库的六个步骤,包括加载驱动、提供URL、创建连接、创建Statement、执行SQL和关闭对象。还提到了导入JDBC驱动包的两种方法,并提供了具体的代码示例展示如何创建数据库连接和执行SQL语句。最后,给出了JDBC相关资源链接供进一步学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

一jdbc的简单介绍:

二:实现JDBC连接数据库的具体步骤:

1、加载JDBC驱动程序:

2、提供JDBC连接的URL

3、创建数据库的连接

4、创建一个Statement

5、执行SQL语句并处理数据

6、关闭JDBC对象

 三:下面正式介绍如何连接jdbc的具体方法:


 

一jdbc的简单介绍:

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

有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言"编写一次,处处运行"的优势。

更详细的可以参照:

jdbc介绍

二:实现JDBC连接数据库的具体步骤:

1、加载JDBC驱动程序:

2、提供JDBC连接的URL

3、创建数据库的连接

4、创建一个Statement

5、执行SQL语句并处理数据

6、关闭JDBC对象

注意:在进行数据库连接之前要导入包:

jar包的下载地方:

方式一:官网下载

方式二:Maven仓库下载

 

 

有两种导入包的方式:

具体可以参考:

(31条消息) 如何在Java项目中导入Jar包_java怎么导包_林暗惊风的博客-优快云博客

下面介绍其中一种:

1首先创建一个libs(名字可以换)的文件夹:

 

2将自己下载好的jar包直接复制在该文件夹下面:

3 右键libs的文件夹:

选中APPLY  as library:

在这里插入图片描述

 三:下面正式介绍如何连接jdbc的具体方法:

1声明connection的对象:

connection con=null;为了防止后面的一些情况,可以提前设置为空。

2驱动程序:

其中的driver都是已经配置好的不需要操心。

url的方法:jdbc:mysql://localhost:3306/数据库名称

user:就是你的用户一般为root

password:就是你自己设置的密码。

String driver = "com.mysql.jdbc.Driver";
        //URL指向要访问的数据库名mydata
         String url = "jdbc:mysql://localhost:3306/sqltestdb";
         //MySQL配置时的用户名
         String user = "root";
         //MySQL配置时的密码
         String password = "root";

3加载程序:

格式Class.forname(”com.mysql.jdbc.Driver“)

getConnection()的方法来连接。

             //加载驱动程序
             Class.forName(driver);
             //1.getConnection()方法,连接MySQL数据库!!
             con = DriverManager.getConnection(url,user,password);

                        还有其他的两种方式:

                // or:
                // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
                // or:
                // new com.mysql.jdbc.Driver();

                        if(con!=null)

                           {system.out.println("连接数据库成功”)}

                

此时如果没有发生什么异常的话就是连接成功了.

4创建statement类的对象,用来执行sql的语句。

此处可以创建其他类型的对象:preparedstatement,callablestatement.

一般用这个方法就行:Statement statement = con.createStatement();

Statement stmt=conn.createStatement();

PreparedStatement pstmt = conn.PreparedStatement() ;

CallableStatement cstmt =  conn.prepareCall("{CALL demoSp(? , ?)}") ;

statement的具体实现形式:

Statement有四种形式的执行

  • executeQuery
  • executeUpdate
  • execute
  • Batch 

executeQuery

  用于产生单个结果集的语句,用于执行 SELECT 语句(SELECT无疑是是使用最多的 SQL 语句) ,返回值为ResultSet

executeUpdate

  用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。

  executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。

execute

  用于执行返回多个结果集、多个更新计数或二者组合的语句。execute对与结果的处理比较麻烦

  execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。

  返回值指示类型情况:如果下一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在更多结果,则返回 false

5写下要执行的sql语句并且执行语句

//例如:
sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
int result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功

6关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象

     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{   
            conn.close() ;   
         }catch(SQLException e){   
            e.printStackTrace() ;   
         }   
     }  

综合上述的情况,给出几个简单的实例:

示例一:

package cn.tkr.jdbc;

        import java.sql.Connection;
        import java.sql.DriverManager;
        import java.sql.Statement;
public class JDBCDemo {
    public static void main(String[] args) throws Exception {   //下面方法有不同的异常,我直接抛出一个大的异常
        //1、导入驱动jar包
        //2、注册驱动
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //3、获取数据库的连接对象
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "root");
            System.out.println("成功连接!");

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                    System.out.println("关闭源成功!");
                }catch(Exception e) {
                    e.getMessage();

                }
            }
        }

    }
}

示例二:

package sqldemo;
        
         import java.sql.Connection;
         import java.sql.DriverManager;
         import java.sql.ResultSet;
         import java.sql.SQLException;
         import java.sql.Statement;
        
         public class main {

             public static void main(String[] args) {
                 //声明Connection对象
                 Connection con;
                 //驱动程序名
                 String driver = "com.mysql.jdbc.Driver";
                 //URL指向要访问的数据库名mydata
                 String url = "jdbc:mysql://localhost:3306/sqltestdb";
                 //MySQL配置时的用户名
                 String user = "root";
                 //MySQL配置时的密码
                 String password = "123456";
                 //遍历查询结果集
                 try {
                        //加载驱动程序
                         Class.forName(driver);
                         //1.getConnection()方法,连接MySQL数据库!!
                         con = DriverManager.getConnection(url,user,password);
                         if(!con.isClosed())
                                 System.out.println("Succeeded connecting to the Database!");
                         //2.创建statement类对象,用来执行SQL语句!!
                         Statement statement = con.createStatement();
                         //要执行的SQL语句
                         String sql = "select * from emp";
                         //3.ResultSet类,用来存放获取的结果集!!
                         ResultSet rs = statement.executeQuery(sql);
                         System.out.println("-----------------");
                         System.out.println("执行结果如下所示:");
                         System.out.println("-----------------");
                         System.out.println("姓名" + "\t" + "职称");
                         System.out.println("-----------------");
            
                         String job = null;
                         String id = null;
                         while(rs.next()){
                                 //获取stuname这列数据
                                 job = rs.getString("job");
                                 //获取stuid这列数据
                                 id = rs.getString("ename");
                
                                 //输出结果
                                 System.out.println(id + "\t" + job);
                             }
                         rs.close();
                         con.close();
                     } catch(ClassNotFoundException e) {
                         //数据库驱动类异常处理
                         System.out.println("Sorry,can`t find the Driver!");
                         e.printStackTrace();
                         } catch(SQLException e) {
                         //数据库连接失败异常处理
                         e.printStackTrace();
                         }catch (Exception e) {
                         // TODO: handle exception
                         e.printStackTrace();
                     }finally{
                         System.out.println("数据库数据成功获取!!");
                     }
             }

         }

示例三:

package com.bluesun.demo;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;


public class demo1 {
    public static void main(String[] args) throws Exception {
        Connection conn = null;
        String sql;
        // MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
        // 避免中文乱码要指定useUnicode和characterEncoding
        // 执行数据库操作之前要在数据库管理系统上创建一个数据库,名字自己定,
        // 下面语句之前就要先创建javademo数据库
        String url = "jdbc:mysql://localhost:3306/demo?"
                + "user=root&password=root&useUnicode=true&characterEncoding=UTF8";

        try {
            // 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,
            // 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以
            Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
            // or:
            // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
            // or:
            // new com.mysql.jdbc.Driver();

            System.out.println("成功加载MySQL驱动程序");
            // 一个Connection代表一个数据库连接
            conn = DriverManager.getConnection(url);
            // Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
            Statement stmt = conn.createStatement();
            sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
            int result = stmt.executeUpdate(sql);// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功
            if (result != -1) {
                System.out.println("创建数据表成功");
                sql = "insert into student(NO,name) values('2012001','陶伟基')";
                result = stmt.executeUpdate(sql);
                sql = "insert into student(NO,name) values('2012002','周小俊')";
                result = stmt.executeUpdate(sql);
                sql = "select * from student";
                ResultSet rs = stmt.executeQuery(sql);// executeQuery会返回结果的集合,否则返回空值
                System.out.println("学号\t姓名");
                while (rs.next()) {
                    System.out
                            .println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int类型可以用getInt()
                }
            }
        } catch (SQLException e) {
            System.out.println("MySQL操作错误");
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
        }

    }

}

 

更多的资料可以参考:

jdbc的详细介绍 关于statement preparedstatement等的介绍

https://www.cnblogs.com/wangyage/p/7395805.html

https://www.cnblogs.com/noteless/p/10307273.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值