java —— MySQL 操作

一、常用 MySQL 语句

(一)创建数据库

 create database 数据库名;

例如:创建一个名为 hello 的数据库

create database hello;

 注:如果起初没有任何数据库,那么在建立连接的时候,地址 String address="jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=UTC"; 里蓝色数据库的位置可以省略。等待数据库建立之后,再将其补上,即可建立与该数据库的连接。

(二)创建表

create table 表名 (第一列名称  第一列类型,第二列名称  第二列类型……);

例如:创建一个名为 user 的表,表内三列,分别是 int 类型的 id,varchar(10)类型的 username 和 varchar(10)类型的 userpassword

create table User (id int,username varchar(10),userpassword varchar(10));

(三)给表添加列

 alter table 表名 add 列名 列类型;

例如:给 user 表添加一个 varchar(10) 类型的 phoneNumber 列

alter table user add phoneNumber varchar(10);

(四)添加行数据

 insert into 表名 (列名1,列名2……) values (值1,值2……);

例如:给 user 表添加 id 为 7,username 为 Tom,userpassword 为 123 的一行数据

insert into user (id,username,userpassword) values (7,"Tom","123");

(五)更新数据

 update 表名 set 列名1=值1,列名2=值2…… where 条件;

例如:把 user 表中第 7 行的 username 改为 Jerry,userpassword 改为 258

update user set username="Jerry",userpassword="258" where id=7;

(六)删除整行数据

 delete from 表名 where 条件;

例如:删除 user 表中 id 为 7 的一行

delete from user where id=7;

(七)删除表

 drop table 表名;

例如:删除 user 表

drop table user;

(八)删除数据库

drop database 数据库名;

例如:删除 hello 数据库

drop database hello;

(九)查询

 ① 查询所有

select * from 表名;

例如:查询 user 表的所有数据

select * from user;

② 有条件查询

 select 列名1,列名2  from 表名 where 条件;

例如:查询 user 表中 id 为 7 的 username 和userpassword

select username,userpassword from user where id=7;

二、Statement

Statement 是建立在 java 与 MySQL 连接上的一个接口,用以执行 MySQL 语句。

(一).execute(sql语句)

返回一个布尔值,true 表示此次操作产生了一个结果集,false 表示此次操作没有产生结果集。

Statement stm=conn.createStatement();
boolean x=stm.execute("update user set username='Jerry',userpassword='258' where id=7;");
boolean y=stm.execute("select * from user");

本案例中,x 等于 false,没有产生结果集;y 等于 true,产生了结果集。 

(二).executeUpdate(sql语句)

返回一个int型数值,表示受影响的行数。

Statement stm=conn.createStatement();
int x=stm.executeUpdate("update user set username='Jerry',userpassword='258' where id=7;");

本案例中,x 等于 1,表示该操作只影响了 1 行。 

(三).executeBatch()

返回一个int型数组,内容不是 0 就是 1,前者表示执行失败,后者表示执行成功。该方法需要配合 .addBatch(sql语句) 使用。

Statement stm=conn.createStatement();
stm.addBatch("update user set username='Jerry',userpassword='258' where id=7;");
stm.addBatch("insert into user (id,username,userpassword) values (8,"Tom","147");");
int[] xarr=stm.executeBatch();
for(int x:xarr)
{System.out.println(x);}

(四).executeQuery(sql语句)

返回一个 ResultSet 结果集。

Statement stm=conn.createStatement();
ResultSet rs=stm.executeQuery("select * from user;");

三、ResultSet 结果集

(一)移动游标

Statement stm=conn.createStatement();
ResultSet rs=stm.executeQuery("select * from user");
rs.next();           //将游标移动至下一行
rs.previous();       //将游标移动至上一行
rs.first();          //将游标移动至第一行
rs.last();           //将游标移动至最后一行
rs.absolute(5)       //将游标移动至第5行
rs.relative(-2)      //将游标向上移动2行

 默认游标指向第 0 行,所以即使结果集里只有一个数据,也要移动游标才能获得。

(二)获取值

Statement stm=conn.createStatement();
ResultSet rs=stm.executeQuery("select * from user");
while(rs.next())
{
int id=rs.getInt("id");                     //获取id值
String name=rs.getString("username");       //获取username值
String pwd=rs.getString("userpassword");    //获取userpassword值
}//括号内的参数除了用列名之外,还可以用列索引,从1开始

(三)获取行号

Statement stm=conn.createStatement();
ResultSet rs=stm.executeQuery("select * from user");
rs.next();
int x=rs.getRow();            //获取行号,此时行号显然为 1

(四)获取列信息

Statement stm=conn.createStatement();
ResultSet rs = stm.executeQuery("select * from user;");
ResultSetMetaData metaData = rs.getMetaData();
//引入ResultSetMetaData,ResultSetMetaData是获取ResultSet对象元数据信息的接口int columnCount = metaData.getColumnCount();   //一共多少列for (int i = 1; i <= columnCount; i++) 
{String columnName = metaData.getColumnName(i);        //获取第i列的列名String columnType = metaData.getColumnTypeName(i);    //获取第i列的类型System.out.println("列名: " + columnName + ", 类型: " + columnType);
}

(五)判断上次取值是否为空

Statement stm=conn.createStatement();
ResultSet rs = stm.executeQuery("select * from user;");
rs.next();
boolean x=rs.wasNull();       //判断上次取值是否是空

(六)关闭结果集

rs.close();          //关闭结果集并释放资源

四、在 java 中保存 MySQL 数据

① 建立一个对象类,表中每一行都是一个对象

public class User {int id;String username;String userpassword;public User(int id,String username,String userpassword) {this.id=id;this.username=username;this.userpassword=userpassword;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getUserpassword() {return userpassword;}public void setUserpassword(String userpassword) {this.userpassword = userpassword;}
}

② 声明一个该对象类型的 ArrayList 数组,并通过构造方法将每个对象实例化,然后用 ArrayList 的 .add() 方法将实例化后的对象添加进 ArrayList 数组

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;public class Test {public static void main(String[] args) {Connection conn=GetConnection.getconnection();Statement stm=null;                                //声明一个空的statement对象ResultSet userset=null;                            //声明一个空的resultset对象try {stm=conn.createStatement();String sql="select * from userlogin";userset=stm.executeQuery(sql);                 //查询结果放入ResultSet结果集ArrayList<User> userlist=new ArrayList<User>();      //声明user型动态数组while(userset.next()){int id=userset.getInt(1);String username=userset.getString(2);   //循环获取每一行的id、username、userpasswordString userpassword=userset.getString(3);User u=new User(id,username,userpassword);   //通过构造方法实例化每个对象userlist.add(u);				             //将对象挨个添加到动态数组中}for(User u:userlist){System.out.print(u.getId()+"\t");System.out.print(u.getUsername()+"\t");      //遍历System.out.println(u.getUserpassword());}} catch (SQLException e) {e.printStackTrace();}finally{try {userset.close();stm.close();                //关闭statement接口conn.close();               //关闭conn连接} catch (SQLException e) {e.printStackTrace();}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle的cbo怎么使用cbo和rule的区别

Oracle CBO的使用与RBO的区别 一、Oracle CBO的使用 Oracle的基于成本的优化器&#xff08;CBO&#xff09;在Oracle 7中引入&#xff0c;但在Oracle 8i中才变得成熟。CBO会根据SQL语句的预计成本&#xff08;这里的成本主要指CPU和内存的使用&#xff09;来选择最优的执行计…

【OpenCV 基础知识 18】对两图像按位与操作

cvAnd是opencv的一个库函数&#xff0c;功能是计算两个数组的按位与的结果。 计算两个数组的每个元素的按位与 void cvAnd( const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* maskNULL ); src1 第一个原数组 src2 第二个原数组. dst 输出数组 mask 操作覆盖面&…

Kafka消息丢失处理方式,消息丢失与消费失败区别和分别的处理

Kafka 消息丢失的处理方式可以从生产者、Broker 和消费者三个角度来考虑&#xff0c;以确保消息的可靠传递。以下是一些关键的处理措施&#xff1a; Kafka消息丢失处理方式 1. 生产者端的处理方式&#xff1a; 使用生产者确认&#xff08;acks配置&#xff09;&#xff1a;通…

jmeter之MD5加密接口请求教程

前言&#xff1a; 有时候在项目中&#xff0c;需要使用MD5加密的方法才可以登录&#xff0c;或者在某一个接口中遇到 登录获取token后才可以进行关联&#xff0c;下面介绍下遇到的常见使用 一、第一种方法&#xff1a;使用jmeter自带的函数助手digest 选择工具&#xff0c;选择…

高效的大型语言模型适应方法:提升基础性的解决方案

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

jenkins升级,涉及ssh remote执行出现Algorithm negotiation fail

问题&#xff1a;jenkins升级&#xff0c;发现自由风格job和流水线在用到ssh remote命令连接远程服务器的时候出现Algorithm negotiation fail错误。如下错误&#xff1a;1、algorithmName"server_host_key"&#xff0c;2、algorithmName"kex" com.jcraft…

表查询基础【mysql】【表内容 增,删,改,查询】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;Linux_花果山~程序猿的博客-CSDN博客MySQL之旅_花果山~程序猿的博客-CSDN博客Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我…

【EXCEL_VBA_常用过程 函数】

结合日常工作需要&#xff0c;收录或改写相关过程及函数&#xff0c;现共享给大家&#xff0c;希望能对大家有所帮助&#xff01; 目录 1. 过程 1.1 批量处理框架Application.GetOpenFilename 2. 功能函数 2.1 字符串数组比对 / 两组数据比对是否一致&#xff08;不要求元素…

服务器硬件基础知识以及如何部署相关应用

服务器硬件是构成服务器物理基础的组件集合&#xff0c;它们共同工作以提供计算服务、数据存储、网络通信等功能。以下是一些关键的服务器硬件基础知识&#xff1a; 1. 处理器&#xff08;CPU&#xff09; 作用&#xff1a;服务器的大脑&#xff0c;负责执行程序指令和处理数…

Redis(十三) 事务

文章目录 前言事务的特性Redis事务的执行原理Redis中使用事务WATCH UNWATCH实现乐观锁 前言 前面我们学习 MySQL 的时候&#xff0c;肯定也学习了事务。事务是什么&#xff1f;给大家举个例子&#xff1a;假如我给朋友微信转账&#xff0c;我给他转了 100 块钱&#xff0c;当我…

【14】bat脚本备份mysql数据

说明 1、请注意windows的bat脚本语法 2、请注意linux和windows的格式 3、请注意时间是个位数的问题 一、参数说明 1、参数说明: setlocal ENABLEDELAYEDEXPANSION 是延迟变量 setlocal和endlocal 是必须要一起用 @echo on 是开启显示,方便调试 :: 注释 cd /d D:\dbbackup …

Golang | Leetcode Golang题解之第114题二叉树展开为链表

题目&#xff1a; 题解&#xff1a; func flatten(root *TreeNode) {curr : rootfor curr ! nil {if curr.Left ! nil {next : curr.Leftpredecessor : nextfor predecessor.Right ! nil {predecessor predecessor.Right}predecessor.Right curr.Rightcurr.Left, curr.Righ…

格式转化——Labelme标注好的json文件批量转为png(标签)文件(物体为红色,背景为黑色)和jpg原图

作用如题目&#xff0c;批量将标注好的json文件转成png标签&#xff0c;jpg原图&#xff0c;其中标签时红黑图。 代码如下&#xff1a; import argparse import base64 import json import os import os.path as osp import imgviz import PIL.Image import yaml from labelm…

Vue3实战笔记(46)—Vue 3高效开发定制化Dashboard的权威手册

文章目录 前言Dashboard开发总结 前言 后台管理系统中的Dashboard是一种图形化的信息显示工具&#xff0c;通常用于提供一个特定领域或系统的概况。它可以帮助用户监控和分析数据&#xff0c;快速获取重要信息。可以帮助用户监控业务状况、分析数据、获取关键信息和管理资源。…

list的模拟实现(一)

嗨喽大家好&#xff0c;时隔许久阿鑫又给大家带来了新的博客&#xff0c;list的模拟实现&#xff08;一&#xff09;&#xff0c;下面让我们开始今天的学习吧&#xff01; list的模拟实现&#xff08;一&#xff09; 1.list splice接口的使用 2.list尾插的实现 3.list的迭代…

Python编程的黑暗魔法:模块与包的神秘力量!

哈喽&#xff0c;我是阿佑&#xff0c;今天给大家讲讲模块与包~ 文章目录 1. 引言1.1 模块化编程的意义1.2 Python中模块与包的概念概述 2. 背景介绍2.1 Python模块系统模块的定义与作用Python标准库简介 2.2 包的结构与目的包的定义与目录结构包在项目组织中的重要性 3. 创建与…

Linux CentOs如何升级openssl

1.获取 OpenSSL 1.1.n 源码 wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz tar -xzf openssl-1.1.1n.tar.gz cd openssl-1.1.1n 2.编译和安装 OpenSSL 1.1.n ./config --prefix/usr/local/openssl-1.1.1n --openssldir/usr/local/openssl-1.1.1n shared zlib m…

【C语言】strstr函数的使用和模拟

前言 今天给大家带来一个字符串函数&#xff0c;strstr()的使用介绍和模拟实现。 模拟实现这个函数&#xff0c;可以帮助我们更深刻地理解这个函数的功能和提高解决字符串相关问题的能力&#xff0c;有兴趣的话就请往下看吧。 strstr函数介绍 函数功能&#xff1a; strstr函…

synchronized什么情况下会释放锁?

synchronized关键字可以用于实现线程之间的同步&#xff0c;它可以修饰方法或代码块&#xff0c;保证在同一时间只有一个线程能够访问被synchronized修饰的代码。 synchronized会在以下情况下释放锁&#xff1a; 代码块执行完毕&#xff1a; 当一个线程执行完了一个被synchro…

Three.js 研究:3、创建一个高科技圆环

打开Alpha混合 修改环形颜色&#xff0c;更改发光的颜色&#xff0c;更改发光的强度为2 更改世界环境灯光