JDBC学习

DriverManager(驱动管理类)

Drivermanager的作用有:

1.注册驱动;

2.获取数据库连接

Class.forName("com.mysql.cj.jdbc.Driver");

这一行的作用就是注册Mysql驱动(把我们下载的jar包加载到内存里去)

常用的方法

这个方法用于与数据库建立链接,参数分别是数据库的地址,用户名,用户的密码;

public static void getConnection() {try {// 注册驱动Class.forName("com.mysql.cj.jdbc.Driver");// 获取连接connection = DriverManager.getConnection(url, user, password);} catch (ClassNotFoundException e) {System.out.println("找不到MySQL驱动程序类!");e.printStackTrace();} catch (SQLException e) {System.out.println("获取数据库连接时出现错误!");e.printStackTrace();}
}

Connection(数据库连接对象)

Connection的作用:

1.获取执行SQL的对象

2.管理事务

常用的方法

Statement

Statement唯一的作用就是用来执行SQL语句,在使用是还有被恶意SQL注入的风险。

常用的方法

executeUpdate(sql):用来执行增、删和修改的操作;

executeQuery(sql):用来执行查询的操作,查询的结果借助ResultSet对象来访问;

import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.Scanner;public class DataBase {static final String url = "jdbc:mysql://localhost:3306/chat";static final String user = "root";static final String password = "123456";static Connection connection = null;// 获取数据库连接public static void getConnection() {try {// 注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//增删查改  jdbc er图// 获取连接connection = DriverManager.getConnection(url, user, password);} catch (ClassNotFoundException e) {System.out.println("找不到MySQL驱动程序类!");e.printStackTrace();} catch (SQLException e) {System.out.println("获取数据库连接时出现错误!");e.printStackTrace();}}public static void main(String[] args) throws SQLException {getConnection();//add();//print();//change();//delete();connection.close();}public static void change() throws SQLException {Statement st = connection.createStatement();st.executeUpdate("UPDATE users SET username=7,password=8,nickname=9");st.close();}public static void print() throws SQLException {Statement st = connection.createStatement();ResultSet s = st.executeQuery("SELECT ID,USERNAME,PASSWORD,NICKNAME FROM USERS");while (s.next()) {int id = s.getInt("id");String username = s.getString("username");String password = s.getString("password");String nickname = s.getString("nickname");System.out.println("id:" + id + "\t" + "username:" + username + "\t" + "password:" + password + "\t" + "nickname:" + nickname);}st.close();s.close();}public static void add() throws SQLException {Statement st = connection.createStatement();st.executeUpdate("INSERT INTO users(id,username,password,nickname) VALUES(5,5,5,5)");st.close();}public static void delete() throws SQLException {Statement st = connection.createStatement();st.executeUpdate("DELETE FROM users WHERE ID=5");st.close();}
}

ResultSet(结果对象集)

ResultSet封装了查询语句的结果。

getXxx(参数):参数是你需要的数据表的字段

注意:要获取数据的时候要先调用next移动光标才能获取数据

PreparedStatement(预编译)

PreparedStatement是Statement的升级版作用是预编译SQL语句并执行,防止恶意的SQL注入;

使用方法:

1.获取PreparedStatement对象

2.设置参数值

3.执行SQL语句

public int Add(Connection connection) throws SQLException {if(Find(connection)==1){return 0;}PreparedStatement preparedStatement =connection.prepareStatement("INSERT INTO STUDENTS(ID,PASSWORD,MAIL,NICKNAME,NAME,IDENTITY) " +"VALUES (?,?,?,?,?,?)");preparedStatement.setString(1,getId());preparedStatement.setString(2,getPassword());preparedStatement.setString(3,getMail());preparedStatement.setString(4,getNickname());preparedStatement.setString(5,getName());preparedStatement.setInt(6,getIdentity());preparedStatement.executeUpdate();preparedStatement.close();return 1;
}

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

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

相关文章

地图图源#ESRI ArcGIS XYZ Tiles系列(TMS)

目录 1、前言 2、地图图源网址 2.1、Satellite 卫星图源 2.2、Terrain 地形图源 2.3、Street 路网/标注图源 2.4、Specifity 特色设计图源 3、专业推荐”穿搭“ 4、图源配置下载及使用 图源名称图层类别特别注意谷歌 Google①地形 ②影像 ③矢量及标注 ④特色图源国内大…

【讲解下Spring Boot单元测试】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

HotSpot JVM 中的应用程序/动态类数据共享

0.前言 本文的目的是详细讨论 HotSpot JVM 自 JDK 1.5 以来提供的一项功能,该功能可以减少启动时间,但如果在多个 JVM 之间共享相同的类数据共享 (CDS) 存档,则还可以减少内存占用。 1.类数据共享 (CDS) CDS 的想法是使用特定格式将预处理…

【LeetCode】187. 重复的DNA序列

题目链接:187. 重复的DNA序列 题目描述: 思路:首先要明白一个重要概念区别: 子串(substring): 原始字符串的一个连续子集。子序列(subsequence): 原始字符串的一个子集。 再注意题意是:长度为10的子串出现…

强固型工业电脑在码头智能化,龙门吊/流机车载电脑的行业应用

码头智能化行业应用 对码头运营来说,如何优化集装箱从船上到码头堆场到出厂区的各个流程以及达到提高效率。 降低成本的目的,是码头营运获利最重要的议题。为了让集装箱码头客户能够安心使用TOS系统来调度指挥码头上各种吊车、叉车、拖车和人员&#xf…

安居水站:理解烟瘾、探索戒烟动因及采用有效策略

摘要:本论文旨在深入探讨烟瘾的成因,分析戒烟的动因和好处,并提出一套科学的戒烟方法和具体策略。通过综合权威机构的研究文献,我们将为公众提供更全面、更深入的理解,从而推动更多人走上戒烟的道路,改善个…

鸿蒙OpenHarmony【轻量系统编写“Hello World”程序】 (基于Hi3861开发板)

编写“Hello World”程序 下方将通过修改源码的方式展示如何编写简单程序,输出“Hello world”。请在下载的源码目录中进行下述操作。 前提条件 已参考鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到…

力扣283. 移动零

Problem: 283. 移动零 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义一个int类型变量index初始化为0; 2.遍历nums当当前的元素nums[i]不为0时使nums[i]赋值给nums[index]; 3.从index开始将nums中置对应位置的元素设为0; 复杂度 时间…

从零开始的vscode配置及安装rust教程

配置vscode的rust环境 下载安装vscodemac 环境1. 下载安装rust2. 配置 mac vscode环境3. 创建一个测试项目 windows 环境1. 安装c运行环境2. 安装配置rustup3. 配置windows vscode环境4. 创建一个测试项目 下载安装vscode 1.官网应用程序下载 vscode:https://code.v…

Dynamic Wallpaper for Mac激活版:视频动态壁纸软件

Dynamic Wallpaper for Mac 是一款为Mac电脑量身打造的视频动态壁纸应用,为您的桌面带来无限生机和创意。这款应用提供了丰富多样的视频壁纸选择,涵盖了自然风景、抽象艺术、科幻奇观等多种主题,让您的桌面成为一幅活生生的艺术画作。 Dynami…

51、图论-岛屿数量

思路: 该问题要求在一个由 1(表示陆地)和 0(表示水)组成的二维网格中,计算岛屿的数量。岛屿被水包围,并且通过水平或垂直连接相邻的陆地可以形成。这个问题的核心是识别并计数网格中相连的陆地…

数据结构之双链表的相关知识点及应用

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构 目录 双链表的实现 初始化双链表 在双链表中尾插数据 在双链表中尾删数据 在双链表中头插数据 在双链表中头删数据 在双…