【MySQL】------数据库连接

2023-05-16

分享第十九条励志语录

要想飞起来,首先要有飞翔的信念,如果没有这个信念,永远不可能飞起来。但只要有了飞翔的信念,再加上自己的努力,就有可能能够飞起来。成功也是这样,要想成功,首先得有成功的信念,然后要不断的为这个信念去努力,做到这两点,成功也就离我们不远了

一:数据库连接

1:如何操作数据库

(1)使用DOS命令窗口,输入“mysql -hlocalhost -u数据库用户名 -p数据库密码”命令连接数据库,编写SQL语句(SQL语句以分号;或者\g结尾),回车运行,查看操作结果(受影响行数或结果集)

(2)使用MySQL数据库自带的命令窗口,输入数据库密码连接数据库,编写SQL语句(SQL语句以分号;或者\g结尾),回车运行,查看操作结果(受影响行数或结果集)

(3)使用数据库连接软件(SQLyog)连接数据库,通过图形化界面或者在查询编辑器中编写SQL语句,运行SQL语句查看操作结果(受影响行数或结果集)

2:实际开发中如何操作数据库

在实际开发中,当用户的数据发生变化时,不会也不可能通过客户端连接数据库去操作SQL语句,因为在实际开发中,数据的操作量很大,如果使用客户端操作数据库,无法保证SQL语句的正确性和执行效率。

二、JDBC(Java Database Connectivity)

1 :JDBC的概念


(1)JDBC(Java DataBase Connectivity)Java连接数据库的规范(标准),可以使用Java语言连接数据库,从而对数据进行增删改查(CURD)操作。  

2: JDBC核心思想

Java中定义了访问数据库的接口,可以为多种关系型数据库提供统一的访问方式。由数据库厂商提供驱动实现类(Driver数据库驱动)。

2.2.1 MySQL数据库驱动


mysql-connector-java-5.1.x 适用于5.x版本
​
mysql-connector-java-8.1.x 适用于8.x版本  

2.2.2 JDBC API

JDBC是由多个接口和类进行功能实现的。

类型权限定名功能
classjava.sql.DriverManager管理多个数据库驱动类,提供了获取数据库连接的方法
interfacejava.sql.Connection代表一个数据库连接(当connection不为null时,表示已连接数据库)
interfacejava.sql.Statement发送SQL语句到数据库工具
interfacejava.sql.PreparedStatement发送SQL语句到数据库工具
interfacejava.sql.ResultSet保存SQL查询语句的结果数据(结果集)
classjava.sql.SQLException处理数据库应用程序时所发生的异常

2.3 JDBC环境搭建


(1)在项目下创建lib文件夹,用于存放jar文件。
​
(2)将mysql驱动mysql-connector-java-5.1.x复制到项目的lib文件夹中。
​
(3)将选中lib文件中的jar文件配置到项目中。  

三、JDBC的开发步骤(非常重要)

3.1 注册驱动

使用Class.forName("包含完整路径的驱动类");//手动加载字节码文件到JVM中。


//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");  

3.2 获取连接对象

通过DriverManager.getConnection(url,user,password)获取数据库连接对象

url:mysql数据库的路径

user:mysql数据库用户名

password:mysql数据库密码


//2、获取连接对象
String url = "jdbc:mysql://127.0.0.1:3306/java221804";
String dbuser = "root";
String password = "******";
Connection connection = DriverManager.getConnection(url, dbuser, password);  

3.3 获取发送SQL语句的对象

通过Connection对象获取Statement对象,用于发送SQL语句,实现对数据库进行访问。


//3、获取发送SQL语句的对象
Statement statement = connection.createStatement();  

3.4 执行SQL语句

编写SQL语句并执行SQL语句,接收SQL语句的执行结果。


//编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法错误
String sql = "DELETE FROM stu WHERE sid='S_1010';";
//4、执行SQL语句,并接收结果
//DML语句:对于插入数据、修改数据、删除数据操作,都调用executeUpdate()方法,返回受影响的行数(int类型)
//DQL语句:对于查询数据,调用executeQuery()方法,返回一个结果集(ResultSet类型)
int num =statement.executeUpdate(sql);  

3.5 处理结果

处理第三步返回的数据。对返回的受影响行数结果进行逻辑判断;对返回的结果集进行迭代、依次获取数据。


//5、处理结果
if(num==1){
    System.out.println("数据删除成功");
}else{
    System.out.println("数据删除失败");
}  

3.6 释放资源

释放(关闭)所使用到的所有资源对象,遵循”先开的后关,后开的先关“原则。


//6、释放资源:先开后关,后开先关
statement.close();
connection.close();  

3.7 综合案例

综合上述6个步骤,实现向数据库表中插入一条数据。


package cn.bdqn.demo01;
​
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
​
public class InsertJDBC {
​
    public static void main(String[] args) {
​
        try {
            // 1、注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2、获取连接对象
            String url = "jdbc:mysql://127.0.0.1:3306/java221804";
            String user = "****";
            String password = "****";
            Connection connection = DriverManager.getConnection(url, user,password);
            // 3、获取发送SQL语句的对象
            Statement statement = connection.createStatement();
            // 编写SQL语句
            String sql = "INSERT INTO stu VALUES('S_1010','laoliu',29,'male');";
            // 4、执行SQL语句
            int num = statement.executeUpdate(sql);
            System.out.println(num);
            // 5、处理结果
            if (num == 1) {
                System.out.println("数据插入成功");
            } else {
                System.out.println("数据插入失败");
            }
            // 6、释放资源:先开后关,后开先关
            statement.close();
            connection.close();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}  

今天的分享就到此结束了

创作不易点赞评论互关三连

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MySQL】------数据库连接 的相关文章

  • MySQL 5:我的 GROUP BY 字段的顺序重要吗?

    Peeps 我的 MySQL 查询中有一些聚合 计算字段 我的 GROUP BY 子句是动态生成的 具体取决于用户在 Web 表单中选择的选项 很好奇 GROUP BY 子句中列出的字段顺序是否会对计算产生任何影响 例如 SUM AVERA
  • 使用 MySQL 的 CURDATE() 或 PHP 的 date() 更快?

    使用mysql查询是不是更快 SELECT CURDATE as today 或 PHP 语句 curdate date Y m d 同样的答案是否适用于使用date VS MySQL 的NOW and CURTIME 如果您只是执行查询以
  • MySQL,连接两列

    MySQL 表中有两列 SUBJECT and YEAR 我想生成一个字母数字唯一编号 其中包含主题和年份的串联数据 我怎样才能做到这一点 是否可以使用像这样的简单运算符 您可以使用CONCAT http dev mysql com doc
  • PDO获取最后插入的ID

    我有一个查询 我想获取插入的最后一个 ID 字段ID是主键并且自动递增 我知道我必须使用这个声明 LAST INSERT ID 该语句适用于如下查询 query INSERT INTO cell place ID VALUES LAST I
  • 错误代码:1062。重复条目“PRIMARY”

    因此 我的教授给了我表格将其插入数据库 但是当我执行他的代码时 MySQL 不断给出错误代码 1062 这是冲突表和插入 TABLES CREATE TABLE FABRICANTES COD FABRICANTE integer NOT
  • MySQL InnoDB引擎是否对只读事务运行任何性能优化

    根据参考文档 只读事务标志可能会提示存储引擎运行一些优化 设置会话事务只读 如果事务访问模式设置为 READ ONLY 则对表进行更改 被禁止 这可能使存储引擎能够提高性能 不允许写入时可能进行的改进 InnoDB引擎是否对只读事务运行这样
  • 如何在php/mysql中使用事务

    我正在使用 php mysql 我知道 mysql 中的事务 但不能在我的脚本中使用 下面是我的脚本 如何在我的代码中使用 php 事务 即 BEGIN ROLLBACK COMMIT foreach json a shop as json
  • 使用 Laravel 和 Eloquent 从表中选择全部

    我正在使用 Laravel 4 设置我的第一个模型 以从名为的表中提取所有行posts 在标准 MySQL 中我会使用 SELECT FROM posts 如何在 Laravel 4 模型中实现这一目标 我的完整模型源代码如下
  • 条件对列表的 In 子句

    有一个表 我需要通过在配对值列表中应用和条件来获取分页记录 下面是解释 假设我有一堂课Billoflading其中有各个领域 表中两个重要字段是 tenant billtype 我有一个包含值的对列表 tenant1 billtype1 t
  • 当我尝试计算 mysqli 结果时,为什么会收到警告?

    下面的代码会导致此警告 警告 count 参数必须是数组或实现 Countable 的对象 为什么要这样做 如何防止出现警告 if isset GET edit sonum GET edit update true result mysql
  • MySQL 薛定谔表:存在,但不存在

    我遇到了最奇怪的错误 有时 在创建或更改表时 我会收到 表已存在 错误 但是 DROP TABLE 返回 1051 未知表 所以我得到了一个无法创建 无法删除的表 当我尝试删除数据库时 mysql 崩溃了 有时它有助于创建另一个具有不同名称
  • DataTables 第 2 页的分页未调用放大弹出窗口

    所以我有这个启用分页的数据表 我编码了一种方式 以便用户可以编辑表的行 当用户调用它在放大弹出窗口中打开的编辑页面时 它在第 1 页 从第 2 页起都运行良好 DataTable 及其前面停止调用 Magnific Popup 我只是不明白
  • Monkeyrunner/jython 中未找到 JDBC 驱动程序错误

    我需要在中插入一些东西DB 我在用着JDBC as a connector jython the script mysql数据库和脚本正在运行CentOS 我的代码看起来像这样 from com android monkeyrunner i
  • 如何编写一个 SQL 查询来计算每月和每年的行数?

    有谁知道如何查询 vbulletin 数据库来生成每月 每年注册数量的报告 以获得如下结果 MM YYYY Count 01 2001 10 02 2001 12 感谢下面的这些答案 我的最终版本有效如下 SELECT COUNT as R
  • 选择列表;这与我的 sql 中的 DISTINCT 不兼容

    CREATE DEFINER root localhost PROCEDURE GetAllEventIdList SP in skillId varchar 50 in offsetvalue int in recordlimit int
  • 节点js(获取连接)

    var nodePort 3030 var express require express var app express var bodyParser require body parser var db require mysql va
  • Postgres LEFT JOIN 与 WHERE 条件

    我需要使用 where 条件左连接两个表 Table time table id rid start date end date 1 2 2017 07 01 00 00 00 2018 11 01 00 00 00 2 5 2017 01
  • 执行mvn sql:execute时出错

    我希望 Maven 执行该 sql 文件 它生成的数据库模式稍后将在我的程序中使用 但它不起作用 可能是由 DELIMITER 引起的 当我执行 mvn sql execute 时 它会打印出 ERROR Failed to execute
  • 如何在 kubernetes 上使多个 pod 相互通信

    我是 Kubernetes 新手 我正在尝试通过 microk8s 将应用程序部署到 Kubernetes 该应用程序包含Python Flask后端 Angular前端 Redis和MySQL数据库 我将映像部署在多个 Pod 中 状态显
  • 在 MySQL 连接字符串中指定密码

    我使用 MySQL 作为 DB 和 Yeoman 生成器创建了 ExpressJS MVC 应用程序 并在config js我想更改 MySQL 连接字符串 但我不知道在字符串中指定密码 我的字符串是mysql root localhost

随机推荐

  • 进程、线程以及上下文切换概念详解

    目录 1 线程和进程的概念 2 进程间的通信方式有哪些 xff1f 3 线程的同步和互斥操作 4 在Java中线程是如何实现同步和互斥的 xff1f 4 什么是线程的上下文切换 xff1f 5 什么是用户模式和内核模式 xff1f 1 线程
  • 【计算机网络】(五)拨号上网与宽带上网PPP,PPPoE,ADSL,FTTH(GPON)

    可见链接 https www zhihu com question 48988005 它们都是个人用户接入Ethernet的协议 小学的时候家里就是拨号上网的 xff0c 每次有人打电话到家里网就会断掉 xff0c 游戏就掉线 xff0c
  • 旧版本PX4固件编译报错:error: converting a packed ‘flash_entry_header_t‘ {aka ‘struct flash_entry_header_t‘}..

    文章目录 前言一 解决办法1二 解决办法2三 总结 前言 旧版本PX4 Autopilot固件编译报错 xff0c 报错内容如下 xff1a src lib parameters flashparams flashfs c 190 2 er
  • SNMP测试

    SNMP测试 测试环境 xff1a Solaris10 10 10 128 89 Linux xff1a 10 10 151 8 windows 测试方案 xff1a 1 本地测试 2 远程测试 配置文件 xff1a 修改环境变量 在sol
  • apex编译错误解决方案

    这里写自定义目录标题 apex编译错误解决方案 csrc mlp cpp 123 3 note in expansion of macro AT DISPATCH FLOATING TYPES AND HALF AT DISPATCH FL
  • Javaweb项目实践MVC入门到精通

    Javaweb项目实践MVC入门到精通 目标配置环境实体模型 user Dao的实现实体模型 ModelViewController xff1a 转发任务 xff0c 路由器的功能安全sql注入常见问题 目标 这个目标是写一个MVC模型 通
  • C++ 铪铪铪铪 烫烫烫 屯屯屯

    VS中 xff0c Debug模式下 xff0c 对于未初始化的内存 xff1a 1 xff09 若为栈内存 xff0c 默认为一连串 烫烫烫 xff0c 0xcc 2 xff09 若为堆内存 xff0c 默认为一连串 屯屯屯 xff0c
  • 创新的力量

    创新是个非常好的词 xff0c 虽然这个词已经被用滥了 xff0c 但我依然固执的认为这是一个充满了迷人光辉的词汇 如果把创新放入科技领域 xff0c 这应该是我在科技领域最喜欢的一个词了 我常常对同事或团队的成员说 xff0c 我们在做产
  • 魔方矩阵

    看到魔方矩阵 xff0c 好奇 xff0c 好玩儿 xff0c 正好赶上周五 xff0c 就来放松一下 xff0c 总结一下几种魔方矩阵的规律 xff0c 并写一下C 43 43 实现过程 定义 xff1a 平面魔方的一般定义 xff1a
  • 样条插值曲线类型及其优缺点说明

    Spline Types This page gives a breakdown of each spline type how to use each one and the advantages disadvantages of eac
  • caffe layer层详解

    1 基本的layer定义 xff0c 参数 1 基本的layer定义 xff0c 参数 如何利用caffe定义一个网络 xff0c 首先要了解caffe中的基本接口 xff0c 下面分别对五类layer进行介绍 Vision Layers
  • caffe编译中的python问题

    问题 usr include boost python detail wrap python hpp 50 23 fatal error pyconfig h No such file or directory 解决方案 make clea
  • latex图像注释位置

    latex图像注释的位置在左边 不知道谁把模板里的 usepackage caption 给注释掉了
  • pytorch pretrained model

    pytorch pretrained model two methods method 1 比较大小 self span class token punctuation span model span class token operato
  • 嵌入式100题(76):中断和异常的区别

    中断和异常的区别 1 异常 是指CPU内部出现的中断 即在CPU执行特定指令时出现的非法情况 同时异常也称为同步中断 因此只有在一条指令执行后才会发出中断 不可能在指令执行期间发生异常 产生的原因 程序的错误产生的 编程异常通常叫做软中断
  • 字节序、大端序与小端序及其相关转换

    大端序与小端序及其相关转换 一 字节序定义 字节序 xff0c 为字节的顺序 xff0c 就是大于一个字节类型的数据在内存中的存放顺序 xff0c 一个字节的数据当然就没有顺序可言了 xff0c 其实大部分人在实际的开发中都很少会直接和字节
  • SkeyeLive开源流媒体PC端推拉流直播软件源码功能框架解析

    SkeyeLive是OpenSKEYE开源流媒体团队开发的一款功能丰富的开源PC端流媒体推流拉流直播软件项目 xff0c 目前支持Windows Android版本 xff0c 后续将支持ios版本 xff0c 其中Windows版本的Sk
  • 融资租赁业务系统(财务中台)

    融资租赁业务系统 财务中台 产品白皮书 版本号 xff1a V1 1 李雷 微信号 xff1a yanan122914 平台概述 融资租赁财务中台产品是一套专门针对融资租赁行业设计的融资租赁财务统一解决方案 对租赁公司传统的大单回租 直租
  • InfoQ推荐语:我的梦想

    大家好 非常高兴能在这一期的架构师和大家见面 本人工作了十余载 先后在洪恩软件和用友集团任职 目前任职于用友集团瑞友科技研究院 主要关注领域 企业应用软件平台研发 领域驱动设计 OSGi 动态语言应 用 云计算 移动互联和Mac OS平台相
  • 【MySQL】------数据库连接

    分享第十九条励志语录 要想飞起来 xff0c 首先要有飞翔的信念 xff0c 如果没有这个信念 xff0c 永远不可能飞起来 但只要有了飞翔的信念 xff0c 再加上自己的努力 xff0c 就有可能能够飞起来 成功也是这样 xff0c 要想