当前位置: 首页 > news >正文

JDBC详讲Connection与 jdbc-Statement

 目录

DriverManager:驱动管理对象

功能:

Connection:数据库连接对象

功能:

代码实现:

 jdbc-Statement

 statement作用:

 函数介绍:

代码实现:


DriverManager:驱动管理对象

功能:

        (1)注册驱动:告诉程序该使用那种数据库

代码中常使用:Class.forName("com.mysql.cj.jdbc.Driver");

会被加载进内存,在源码中可发现com.mysql.cj.jdbc.Driver类中存在静态代码块

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.mysql.cj.jdbc;

import java.sql.DriverManager;
import java.sql.SQLException;

public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    public Driver() throws SQLException {
    }

    static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}

***在MySQL5之后可以不注册驱动,因为在MySQLjar包中有文件替你注册驱动

  (2)获取数据库连接

Connection connection = DriverManager.getConnection("jdbc:mysql://192.168.44.1:3306/mydb1","root","200211");

调用DriverManager中的静态方法getConnection(可以直接用类名调用)返回Connection类型对象

***如果连接的是本机MySQL服务器,则MySQL服务器默认为端口是3306,则IP地址和端口号均可以省略。url可以简写为:"jdbc:mysql:///数据库名“

Connection:数据库连接对象

与特定的数据库的链接(接口)

功能:

        (1)获取执行SQL对象Statement

①普通的执行SQL对象:

                        statement    createStatement()

②预编译SQL的执行SQL对象:(防止SQL注入)

                        prepare preparestatement(SQL)

        (2)管理事务:

在MySQL中:

开启事务:

BEGIN

提交事务:

COMMIT

回滚事务

ROLLBACK

MySQL默认自动提交事务

JDBC事务管理:

Connection接口中定义三个对应方法

开启事务:setAutoCommit(boolean autoCommit):为TRUE为自动提交事务,FALSE为手动提交事务,且开启事务

提交事务:commit()

回滚事务:rollback()

代码实现:

`` package jdbc;
`` 
`` import java.sql.*;
`` 
`` public class jdbcconnection {
``     public static void main(String[] args) throws SQLException {
`` String url="jdbc:mysql:///School?useSSL=false";
`` String username="root";
`` String password="123112";
``         Connection connection1 = DriverManager.getConnection(url, username, password);
``        String sql="update student set sdept='cs' where sno='08003'";
``        String sql1="update student set sdept='cs' where sno='08002'";
``         Statement statement = connection1.createStatement();
``         try {
``             connection1.setAutoCommit(false);//开启事务
``             int count= statement.executeUpdate(sql);
``            // int i1=3/0;
``             int i = statement.executeUpdate(sql1);
``             System.out.println(count);
``             System.out.println(i);
``             //提交事务   ---到底了说明结束了
``             connection1.commit();
``         } catch (Exception e) {
``                 //回滚事务
``             connection1.rollback();
``             e.printStackTrace();
``         } finally {
``             statement.close();
``             connection1.close();
``         }
`` 
``     }
`` }

Statement:执行SQL的对象

Resultset:结果集对象

PreparedStatement:执行SQL对象

          

 jdbc-Statement


 statement作用:

    执行SQL语句
            int executeUpdate(sql)
    执行DML,DDL语句
返回值(1)DML(对表中数据进行增删改)语句影响行数
        (2)**DDL**(对表操作语句)语句执行后**,执行成功也可能返回0**(不能用是否结果为0来判断是否成功)(不报异常即可)
ResultSet executeQuery(sql)
    执行DQL语句
返回值:ResultSet**结果集对象**
           ResultSet:


 函数介绍:

 next()函数
用到函数:bool类型    next()(光标默认是指向数据的上一行)
(1)将**光标**从当前位置向前移动一行
(2)判断当前行是否为有效行
返回值:TRUE   有效行
            FALSE   当前行无数据
 getxxx()函数
    getxx(参数)--函数--获取数据(打印数据)
 xxxgetxx(参数)xxx是类型   如  int  String
参数:int   列的编号(编号从1开始)
        String  列名称(可以写编号)
如  String getString(参数)

代码实现:

`` package jdbc;
`` import org.junit.Test;
`` 
`` import java.sql.Connection;
`` import java.sql.DriverManager;
`` import java.sql.SQLException;
`` import java.sql.Statement;
`` /*执行dml语句*/
`` public class jdbcstatement {
``     @Test
`` public void testDML() throws Exception {
``         String url="jdbc:mysql:///School?useSSL=false";
``         String username="root";
``         String password="12312";
``         Connection connection1 = DriverManager.getConnection(url, username, password);
`` 
``         String sql="update student set sdept='cs' where sno='08003'";
``         String sql1="update student set sdept='cs' where sno='08002'";
``         Statement statement = connection1.createStatement();
``         try {
``             connection1.setAutoCommit(false);//开启事务
``             int count= statement.executeUpdate(sql);
`` if(count>0)
`` {
``     System.out.println("修改成功");
`` }
`` else
`` {
``     System.out.println("修改失败");
`` }
``             // int i1=3/0;
``             int i = statement.executeUpdate(sql1);
``             System.out.println(count);
``             System.out.println(i);
``             //提交事务   ---到底了说明结束了
``             connection1.commit();
``         } catch (Exception e) {
``             //回滚事务
``             connection1.rollback();
``             e.printStackTrace();
``         } finally {
``             statement.close();
``             connection1.close();
``         }
`` 
``     }
`` 
`` }
`` 
`` 



 

相关文章:

  • 外部 SRAM 实验
  • Redis从入门到精通(二)
  • 2021.09青少年软件编程(Python)等级考试试卷(四级)
  • JAVA计算机毕业设计毕业论文管理系统Mybatis+系统+数据库+调试部署
  • Redis实战 - 01 Redis 和 SpringSecurity Oauth2 实现认证授权中心
  • 数据结构:堆
  • 基于机器学习的搜索推荐系统
  • MATLAB | 分段赋色折线图及其图例绘制
  • C#面向对象程序设计课程实验三:实验名称:C#数组和集合
  • 数据结构--(栈、队列实现及3个OJ题)
  • 实时数据同步工具<Maxwell 操作案例>
  • 【设计模式】-创建型模式-第2章第3讲-【建造者模式】
  • CS231n Module2: CNN part1:Architecture
  • 模电学习1. 三极管基础知识及常用电路
  • 优化APK体积
  • Centos6.8 使用rpm安装mysql5.7
  • CentOS从零开始部署Nodejs项目
  • Docker容器管理
  • dva中组件的懒加载
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Web设计流程优化:网页效果图设计新思路
  • 复习Javascript专题(四):js中的深浅拷贝
  • - 概述 - 《设计模式(极简c++版)》
  • 解析带emoji和链接的聊天系统消息
  • 利用jquery编写加法运算验证码
  • 深入浅出webpack学习(1)--核心概念
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 用jquery写贪吃蛇
  • AI算硅基生命吗,为什么?
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #微信小程序:微信小程序常见的配置传旨
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (9)STL算法之逆转旋转
  • (Forward) Music Player: From UI Proposal to Code
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (五)IO流之ByteArrayInput/OutputStream
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • .NET : 在VS2008中计算代码度量值
  • .NET 8.0 发布到 IIS
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET DataGridView数据绑定说明
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .Net 应用中使用dot trace进行性能诊断