JDBC概述

article/2025/8/24 3:31:08

目录

  • 一、JDBC概述
  • 二、JDBC搭建
  • 三、 PreparedStatement和Statement
  • 四、结果集处理

一、JDBC概述

1、JDBC(Java DataBase Connectivity)java 数据库连接
2、是一种用于执行SQL语句的java API ,可以为多种关系型数据库提供统一访问,它由一组java语言编写的类和接口组成。
JDBC API:
供程序员调用的接口与类,集成在java.sql 包中
DriverManager类作用:管理各种不同的jdbc驱动;
Connection 接口 与特定数据库的连接
Statement 接口 执行sql
PreparedStatement 接口 执行sql
ResultSet 接口 接收查询结果

二、JDBC搭建

1、在工程目录下新建lib目录,将需要的jar包复制到该目录下
2、将jar包引入工程
在这里插入图片描述
在这里插入图片描述
3、编写程序
(1)注册JDBC驱动程序
这需要初始化驱动程序,这样就可以打开与数据库的通信信道。
Class.forName(“com.mysql.cj.jdbc.Driver”);//反射实现
或者
DriverManager.registerDriver(new Driver());
(2)建立与数据库连接
这需要使用DriverManger。getConnection()方法来创建一个Connection对象,他代表一个物理连接的数据库。
Connection conn=
DriverManger。getConnection(URL,USER,PASS);
URL:jdbc:mysql: //ip(127.0.0.1):端口(3306) /数据库名?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
USER:用户名(root)
PASS:密码
(3)获得Satement执行sql语句
Statement st = connection.createStatement();

package com.java.ff.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;public class JdbcDemo2 {public static void main(String[] args) {JdbcDemo2 jd2 = new JdbcDemo2();try {jd2.savestudent("王萍", "男");} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}}public void savestudent(String name, String sex) throws ClassNotFoundException, SQLException {Connection connection=null;Statement st=null;try {Class.forName("com.mysql.cj.jdbc.Driver");String  url= "jdbc:mysql://127.0.0.1:3306/school_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";connection=DriverManager.getConnection(url,"root","123");st=connection.createStatement();int row=   st.executeUpdate("insert into t_teacher(name,sex)" +"values ('"+name+"','"+sex+"')");System.out.println(row);}finally {if(st!=null){st.close();}if(connection!=null){connection.close();}}}}

(4) 获得PrepareStatement执行sql语句

package com.java.ff.jdbc;import java.sql.*;public class JdbcDemo5 {public static void main(String[] args) {JdbcDemo5 jd2 = new JdbcDemo5();try {jd2.savestudent("王萍", "男");} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}}public void savestudent(String name, String sex) throws ClassNotFoundException, SQLException {Connection connection=null;PreparedStatement ps=null;try {Class.forName("com.mysql.cj.jdbc.Driver");String  url= "jdbc:mysql://127.0.0.1:3306/school_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";connection=DriverManager.getConnection(url,"root","123");//st=connection.createStatement();ps=connection.prepareStatement("insert into t_teacher(name,sex) values (?,?)");ps.setString(1,name);ps.setString(2,sex);ps.executeUpdate();System.out.println(ps);}finally {if(ps!=null){ps.close();}if(connection!=null){connection.close();}}}}

(5)关闭与数据库的链接通道
每次操作完成后关闭所有与数据库交互的通道
st.close();
rs.close();
conn.close();
ps.close();

三、 PreparedStatement和Statement

1、代码的可读性和可维护性
2、提高了安全性

package com.java.ff.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class JdbcDemo7 {public static void main(String[] args) {JdbcDemo7 jd2 = new JdbcDemo7();try {jd2.deletestudent("17 or 1=1");  //安全} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}}public void deletestudent(String num) throws ClassNotFoundException, SQLException {Connection connection=null;PreparedStatement ps =null;try {Class.forName("com.mysql.cj.jdbc.Driver");String  url= "jdbc:mysql://127.0.0.1:3306/school_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";connection=DriverManager.getConnection(url,"root","123");ps=connection.prepareStatement("delete from t_teacher where num = ? ");ps.setString(1,num);ps.executeUpdate();}finally {if(ps!=null){ps.close();}if(connection!=null){connection.close();}}}}
package com.java.ff.jdbc;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;public class JdbcDemo8 {public static void main(String[] args) {JdbcDemo8 jd2 = new JdbcDemo8();try {jd2.deletestudent("12 or 1=1");  //不安全} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}}public void deletestudent(String id) throws ClassNotFoundException, SQLException {Connection connection=null;Statement st=null;try {Class.forName("com.mysql.cj.jdbc.Driver");String  url= "jdbc:mysql://127.0.0.1:3306/school_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";connection=DriverManager.getConnection(url,"root","123");st=connection.createStatement();// int row =st.executeUpdate("delete  from grade where id ="+id);int row=   st.executeUpdate("delete  from graded where id ="+id);// int row=   st.executeUpdate("delete from graded where id= "+id);System.out.println(row);}finally {if(st!=null){st.close();}if(connection!=null){connection.close();}}}}

四、结果集处理

1、PreparedStatement 和Statement 中的executeQuery()方法中会返回一个ResultSet对象,查询结果就封装在此对象中。
2、使用ResultSet中的next()方法获得下一行数据
3、使用getXXX(String name)方法获得值

package com.java.ff.jdbc;import java.sql.*;public class JdbcDemo9 {public static void main(String[] args) {JdbcDemo9 jd2 = new JdbcDemo9();try {Student student = jd2.findstudent(16);System.out.println(student);} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}}public Student findstudent(int num) throws ClassNotFoundException, SQLException {Connection connection=null;PreparedStatement ps =null;Student student =new Student();try {Class.forName("com.mysql.cj.jdbc.Driver");String  url= "jdbc:mysql://127.0.0.1:3306/school_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";connection=DriverManager.getConnection(url,"root","123");ps=connection.prepareStatement("SELECT NAME,num,sex,score,height,operttime\n" +"FROM t_teacher\n" +"WHERE num=?");ps.setInt(1,num);ResultSet res=ps.executeQuery();while (res.next()){student.setName(res.getString("name"));student.setNum(res.getString("num"));student.setSex(res.getString("sex"));student.setScore(res.getString("score"));student.setHeight(res.getString("height"));student.setOperttime(res.getString("operttime"));}}finally {if(ps!=null){ps.close();}if(connection!=null){connection.close();}}return student ;}}
package com.java.ff.jdbc;import java.sql.*;
import java.util.ArrayList;public class JdbcDemo10 {public static void main(String[] args) {JdbcDemo10 jd2 = new JdbcDemo10();try {ArrayList<Student> list =jd2.findstudent("122");System.out.println(list );} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}}public ArrayList<Student> findstudent(String weight) throws ClassNotFoundException, SQLException {Connection connection=null;PreparedStatement ps =null;ArrayList<Student> list =new ArrayList<>();try {Class.forName("com.mysql.cj.jdbc.Driver");String  url= "jdbc:mysql://127.0.0.1:3306/school_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";connection=DriverManager.getConnection(url,"root","123");ps=connection.prepareStatement("SELECT NAME,num,sex,score,height,operttime\n" +"FROM t_teacher\n" +"WHERE weight=?");ps.setString(1,weight);ResultSet res=ps.executeQuery();while (res.next()){Student student =new Student();student.setName(res.getString("name"));student.setNum(res.getString("num"));student.setSex(res.getString("sex"));student.setScore(res.getString("score"));student.setHeight(res.getString("height"));student.setOperttime(res.getString("operttime"));list.add(student);}}finally {if(ps!=null){ps.close();}if(connection!=null){connection.close();}}return list;}}

http://chatgpt.dhexx.cn/article/uw5Ptd6Y.shtml

相关文章

JDBC使用教程详解

文章目录 一、前言二、JDBC概述2.1 JDBC定义2.2 JDBC接口调用方和实现方JDBC接口调用方JDBC接口实现方 2.3 连接数据库驱动2.5 JDBC原理 三、JDBC编程url3.1URL3.3 SQL的分类 四、JDBC编程六步曲4.1 第一步&#xff1a;注册驱动4.2 第二步&#xff1a;获取数据库连接4.3 第三步…

【MySQL】JDBC编程

目录 1、什么是JDBC&#xff1f; 2、导入 jar 包 3、JDBC 的使用 4、总结 1、什么是JDBC&#xff1f; 实际开发中&#xff0c;SQL 是很少手动输入的&#xff0c;绝大多数的 SQL 都是通过代码&#xff0c;自动执行的&#xff0c;这个时候就需要让其他编程语言来操作数据库了…

MySQL JDBC编程

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;MySQL &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 文章目录 前置知识API JDBC的使用安装数据库代码插入操作查找操作 前置知识 API API(Application Program Interface)被定义为应用…

JDBC编程

目录 什么是 JDBC&#xff1f; JDBC 架构 常见的 JDBC 组件 分析Java连接MySQL的五种方式 方式一&#xff1a;将用户名和密码封装在Properties类中 方式二&#xff1a;在方式一的基础上&#xff0c;利用反射实现驱动 方式三&#xff1a;使用DriverManger替代driver进行统…

java——jdbc编程

文章目录 JDBC的概念JDBC的常用APIJDBC示例代码PreparedStatementCallableStatement JDBC&#xff08;Java Database Connectivity&#xff09;是Java的一种数据库访问标准&#xff0c;它提供了一套API&#xff0c;使得我们可以通过Java程序来访问和操作各种关系型数据库。 下面…

JDBC是什么

JDBC介绍 JDBC( Java DataBase Connectivity ) 称为 Java数据库连接 &#xff0c;它是一种用于数据库访问的应用程序 API &#xff0c;由一组用Java语言编写的类和接口组成&#xff0c;有了JDBC就可以 用统一的语法对多种关系数据库进行访问&#xff0c;而不用担心其数据库操作…

如何使用JDBC操作数据库?一文带你吃透JDBC规范

文章目录 1. 前言2. JDBC 概述2.1 概念2.2 优点 3. JDBC 快速入门4. JDBC API详解4.1 DriverManager4.1.1 注册驱动4.1.2 获取连接 4.2 Connection4.2.1 获取执行sql的对象4.2.2 事务管理 4.3 Statement4.4 ResultSet4.5 PreparedStatement4.5.1 sql注入问题4.5.2 preparedStat…

JDBC详解

1.JDBC是什么&#xff1f; Java DataBase Connectivity&#xff08;Java语言连接数据库&#xff09; 2.JDBC的本质是什么&#xff1f; JDBC是SUN公司制定的一套接口&#xff08;interface&#xff09; java.sql.*;&#xff08;这个软件包下有很多接口&#xff09; 接口都有…

JDBC简介

文章目录 一、JDBC简介二、JDBC执行步骤三、执行步骤中类的简介1、DriverManager类2.Connection类3、ResultSet类 一、JDBC简介 1.什么是jdbc JDBC全称&#xff1a;java database connectivity&#xff0c;简称jdbc&#xff0c; 翻译就是 Java 数据库连接。 2.jdbc有什么作用…

JDBC详细介绍

jdbc的概念 JDBC&#xff08;Java DataBase Connectivity,java数据库连接&#xff09;是一种用于执行SQL语句的Java API&#xff0c;可以为多种关系型数据库提供统一访问&#xff0c;它是由一组用Java语言编写的类和接口组成的。 2.jdbc的作用 JDBC为Java程序操作不同的数据库提…

JDBC详细全解(示例超多)

文章目录 JDBCJDBC的概念1.jdbc的概念2.jdbc的本质 JDBC快速入门JDBC功能详解1、DriverManager驱动管理对象2、Connection数据库连接对象3、Statement执行sql语句的对象4、ResultSet结果集对象 JDBC案例案例需求数据准备1、数据库数据准备2、创建student类 功能实现1、查询所有…

JDBC介绍

1 JDBC简介 概念&#xff1a;JDBC(Java DataBase Connectivity) &#xff1a;Java数据库连接技术&#xff1a;具体讲就是通过Java连接广泛的数据库&#xff0c;并对表中数据执行增、删、改、查等操作的技术。如图所示&#xff1a; 此前我们学习过SQL后&#xff0c;可以通过 Na…

JDBC 连接 MySQL

哈喽~大家好&#xff0c;这次我们来看看 JDBC 如何 连接 MySQL. 目录 一、开头 二、介绍 1、JDBC 的概念 2、JDBC 的功能 3、JDBC 的常用接口和类 三、数据库的创建&#xff08;MySQL&#xff09; 1、连接 MySQL (1)、注册驱动 (2)、获取连接 (3)、获取执行者连接 …

BindingNavigator 类 - MSDN

.NET Framework 2.0 其他版本 5&#xff08;共 9&#xff09;对本文的评价是有帮助 - 评价此主题 注意&#xff1a;此类在 .NET Framework 2.0 版中是新增的。 表示窗体上绑定到数据的控件的导航和操作用户界面 (UI)。 命名空间:System.Windows.Forms 程序集:System.Windows.Fo…

Android的一个BindView工具的实现

对于Android已经有很多Bind View的工具了&#xff0c;大多都是使用了反射和注解的方法。那么如何实现一个简易的代码生成工具呢&#xff1f;其实不难&#xff0c;只要会写代码都可以试试。这些天&#xff0c;我试了一下&#xff0c;并将它做成了工具。代码如下&#xff1a; pa…

setNavigationBarTitle

wx.setNavigationBarTitle就是用来改红框框里面的内容滴 在项目开发中经常用到 使用的场景就包括了多个地方用同一套页面的时候 wx.setNavigationBarTitle({title: "我的店铺",});

安卓ViewBinding详解

背景 之前我们通过Kotlin Android Extensions来访问布局文件中的元素&#xff0c;但是这个现在被废弃了&#xff0c;原因如下&#xff1a; 空安全&#xff1a;res下的任何id都可以被访问&#xff0c;有可能因访问了非当前Layout下的id而出错兼容性&#xff1a;只能在kotlin中…

Winform中用bindingNavigator和bingdingSource实现分页

BindingNavigator控件介绍 可以使用BindingNavigator控件来创建标准化的方法&#xff0c;以便用户搜索和更改 Windows 窗体上的数据。BindingNavigator 控件由包含一系列 ToolStripItem 对象的ToolStrip组成&#xff0c;可以实现&#xff1a;添加数据&#xff0c;删除数据&…

DataGridView使用bindingNavigator实现分页功能(应用存储过程)

想法是这样的&#xff1a;使用bindingNavigator存储过程实现DataGridView的分页功能&#xff0c;其中包含简单的查询。 存储过程如下&#xff1a; --创建分页查询存储过程(含输出参数&#xff0c;输入参数&#xff08;含搜索功能&#xff09;) use HotelDB if exists(select *…

配置bind

安装bind yum install bind-* service firewalld stop #暂时关闭防火墙 vim /etc/named.conf Linsten-on port 53 {any;}; 监听除了自己以外的ip Allow-query{any&#xff1b;} 允许任意的ip来访问 配置正向解析 /etc/named.rfc1912.zones #直接在底部添加 zone "s…