首页 > 其他分享 >JDBC

JDBC

时间:2023-03-16 18:22:47浏览次数:23  
标签:DriverManager JDBC java String sql import conn

JDBC就是使用Java语言操作关系型数据库的一套API

本质上是官方公司定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包,我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动的jar包中的实现类。

好处是各数据库厂商使用相同的接口,Java代码不需要针对不同的数据库分别开发。

1.DriverManage

package com.jdbc;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.Statement;

//        DriverManager.getConnection 获取数据库连接
//        DriverManager.registerDriver(); 注册驱动

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
//        注册驱动
        Class.forName("com.mysql.jdbc.Driver");
//        获取连接
        String url="jdbc:mysql://127.0.0.1:3306/db1";
        String usernam="root";
        String password="root";
//        DriverManager.getConnection 获取数据库连接
//        DriverManager.registerDriver(); 注册驱动

        Connection conn=DriverManager.getConnection(url,usernam,password);
//        定义sql
        String sql="update stu set status=2 where id=2";
//        获取执行sql的对象
        Statement stat=conn.createStatement();
//        执行sql,返回受影响的行数
        int count=stat.executeUpdate(sql);
//        释放资源
        stat.close();
        conn.close();


    }

}

2.Connection

package com.jdbc;

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

//Connection作用
//获取执行SQL的对象
//管理事务

public class JDBCDemo2_Connection {
    public static void main(String[] args) throws Exception {
//        注册驱动
        Class.forName("com.mysql.jdbc.Driver");
//        获取连接
        String url="jdbc:mysql://127.0.0.1:3306/db1";
        String usernam="root";
        String password="root";
//        DriverManager.getConnection 获取数据库连接
//        DriverManager.registerDriver(); 注册驱动

        Connection conn=DriverManager.getConnection(url,usernam,password);
//        定义sql
        String sql1="update stu set status=2 where id=2";
        String sql2="update stu set status=2 where id=3";
//        获取执行sql的对象
        Statement stat=conn.createStatement();



        try {
            //        开启事务
            conn.setAutoCommit(false);
//        执行sql,返回受影响的行数
            int count1=stat.executeUpdate(sql1);
            System.out.println(count1);

//        执行sql,返回受影响的行数
            int count2=stat.executeUpdate(sql2);
            System.out.println(count2);
            //        提交事务
            conn.commit();
        } catch (Exception throwables) {
//            回滚事务
            conn.rollback();
            throwables.printStackTrace();
        }


//        释放资源
        stat.close();
        conn.close();


    }

}

3.Statement

执行sql语句

int executeUpdate(sql) 执行DML DDL语句

返回值 DML返回影响的行数  DDL语句执行成功也可能会返回0

ResultSet executeQuery(sql); 执行DQL语句

返回ResultSet结果集对象

package com.jdbc;

import com.pojo.Account;
import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

//Statement作用
//获取执行SQL的对象
//管理事务

//执行DML语句
public class JDBCDemo4_ResultSet {
    @Test
    public void testResultSet() throws Exception{
        //        注册驱动
        Class.forName("com.mysql.jdbc.Driver");
//        获取连接
        String url="jdbc:mysql://127.0.0.1:3306/db1";
        String usernam="root";
        String password="root";
//        DriverManager.getConnection 获取数据库连接
//        DriverManager.registerDriver(); 注册驱动

        Connection conn=DriverManager.getConnection(url,usernam,password);
//        定义sql
        String sql="select * from stu";
//        获取执行的对象
        Statement stmt=conn.createStatement();
//        执行sql
        ResultSet rs=stmt.executeQuery(sql);
//        处理结果 遍历re中的数据
//        光标向下移动一行,判断当前行是否有数据
        while(rs.next()){
//            获取数据
            int id=rs.getInt(1);
            String name=rs.getString(2);
            String gender=rs.getString(3);
            System.out.println(id);
            System.out.println(name);
            System.out.println(gender);
        }
//        释放资源
        rs.close();
        stmt.close();
        conn.close();

    }

//    查询数据库中的数据,封装到Account类中,并存储到ArrayList集合中
//    1.定义实体类
//    2.查询数据,封装到Account对象中
//    3.将Account对象放入ArrayList集合中

    @Test
    public void testResultSet2() throws Exception{
        //        注册驱动
        Class.forName("com.mysql.jdbc.Driver");
//        获取连接
        String url="jdbc:mysql://127.0.0.1:3306/db1";
        String usernam="root";
        String password="root";
//        DriverManager.getConnection 获取数据库连接
//        DriverManager.registerDriver(); 注册驱动

        Connection conn=DriverManager.getConnection(url,usernam,password);
//        定义sql
        String sql="select * from stu";
//        获取执行的对象
        Statement stmt=conn.createStatement();
//        执行sql
        ResultSet rs=stmt.executeQuery(sql);
//        处理结果 遍历re中的数据
//        光标向下移动一行,判断当前行是否有数据
        List<Account> list=new ArrayList<>();
        while(rs.next()){
//            获取数据
            Account account=new Account();
            int id=rs.getInt(1);
            String name=rs.getString(2);
            String gender=rs.getString(3);
            account.setId(id);
            account.setName(name);
            account.setGender(gender);
            list.add(account);
//            System.out.println(id);
//            System.out.println(name);
//            System.out.println(gender);
        }
        System.out.println(list);
//        释放资源
        rs.close();
        stmt.close();
        conn.close();

    }

}

4.PreparedStatement

作用

1.预编译sql语句并执行,预防SQL注入问题,因为他把特殊字符转义了SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方。

2.速度更快

 

 

package com.jdbc;

import com.pojo.Account;
import org.junit.Test;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

//prepareStatement作用
//预防sql注入问题


//执行DML语句
public class JDBCDemo5_PreparedStatement {
    @Test
    public void testLogin() throws Exception{
        //        注册驱动
        Class.forName("com.mysql.jdbc.Driver");
//        获取连接
        String url="jdbc:mysql://127.0.0.1:3306/db1";
        String usernam="root";
        String password="root";
//        DriverManager.getConnection 获取数据库连接
//        DriverManager.registerDriver(); 注册驱动

        Connection conn=DriverManager.getConnection(url,usernam,password);
        String name="";
        String psw="";

//        定义sql
        String sql="select * from tb_user where username=? and password=?";

//        获取执行的对象
        PreparedStatement pstmt=conn.prepareStatement(sql);
        pstmt.setString(1,name);
        pstmt.setString(2,psw);

//        执行sql
        ResultSet rs=pstmt.executeQuery();

//        判断是否有数据
        if(rs.next()){
            System.out.println("登录成功");

        }else{
            System.out.println("登录失败");
        }

//        释放资源
        rs.close();
        pstmt.close();
        conn.close();

    }
}

 

标签:DriverManager,JDBC,java,String,sql,import,conn
From: https://www.cnblogs.com/zhang12345/p/17218042.html

相关文章

  • java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    在一个servlet中连接数据库,加载驱动报错,将异常抛了出来。  解决方案:创建的Maven项目中,在web.xml中引入了mysql的驱动,但是创建的servlet需要使用Tomcat服务器,Tomcat中......
  • jmeter获取jdbc请求的响应结果
         importjava.util.*;importjava.lang.*;Stringverify=prev.getResponseDataAsString();//获取响应结果Stringtest_verify=verify.substring(5,11......
  • jdbc实现的三大部分
    (1)JDBC驱动管理器:负责注册特定的JDBC驱动器,主要通过java.sql.DriverManager类实现。(2)JDBC驱动器API:由Sun公司负责制定,其中最主要的接口是java.sql.Driver接口。(3)......
  • jdbc的实现步骤
    JDBC连接数据库,主要步骤是注册驱动、获取数据库的连接对象、定义sql语句、获取执行sql语句的对象、执行sql并接收返回结果、处理结果、释放资源。那如果有很多个用户访问......
  • 使用Java替换字符串占位符的几种方法 String url2 = "jdbc:mysql://{0}:{1}/{2}"
    使用Java替换字符串占位符的几种方法https://blog.csdn.net/m0_67402125/article/details/125383655importorg.apache.commons.lang.text.StrSubstitutor;importj......
  • JDBC 数据库连接
      一套java代码操作多个数据库 ......
  • jdbc 链接 oracle 查询
    Oracle默认端口号为:1521Stringurl="jdbc:oracle:thin:@localhost:1521:orcl";报错1:ClassNotFoundException:oracle.jdbc.driver.OracleDriver:缺少pom依赖:<depen......
  • Spring JDBC和 事务控制
    SpringJDBC和事务控制1.主要内容2.Spring整合JDBC环境 Spring框架除了提供IOC与AOP核⼼功能外,同样提供了基于JDBC的数据访问功能,使得访问持久层数据更......
  • JDBC--java连接数据库
    什么是JDBCJDBC(javadatabase.connective)它是一套用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种规......
  • JDBC笔记(三):基于JDBC的工具包
    本文主要介绍基于JDBC的两个优秀的工具包,ApacheDBUtils和SpringJDBC的基本应用。1、ApacheDBUtilsDBUtils样例的官网地址:https://commons.apache.org/proper/c......