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

wordpress怎么设置小图标seo入门培训班

wordpress怎么设置小图标,seo入门培训班,搞笑网站建设目的和意义,小程序在哪里文章目录 前言1. 认识 JDBC1.1 概念1.2 好处 2. 使用 JDBC2.1 安装数据驱动包2.2 把 jar 包导入到项目中2.3 代码编写2.4 测试结果 3. 代码优化4. 源码展示结语 前言 在 MySQL 系列中,我们介绍了很多内容,包括但不限于建库建表,增删查改等等…

JDBC 连接数据库

文章目录

  • 前言
  • 1. 认识 JDBC
    • 1.1 概念
    • 1.2 好处
  • 2. 使用 JDBC
    • 2.1 安装数据驱动包
    • 2.2 把 jar 包导入到项目中
    • 2.3 代码编写
    • 2.4 测试结果
  • 3. 代码优化
  • 4. 源码展示
  • 结语


前言

在 MySQL 系列中,我们介绍了很多内容,包括但不限于建库建表,增删查改等等,但是这些操作都是直接在本机上的 MySQL 进行的,而在实际的开发过程中,我们很少会这样做,更多的是通过代码(C++、Java、Python……)来操作数据库的。今天我们就会简单介绍如何通过 Java 代码来操作数据库


1. 认识 JDBC

1.1 概念

JDBC(Java Database Connectivity)是一个 Java API,它提供了一种标准的方法,用于 Java 程序与各种数据库进行交互。简单来说,JDBC 是一个桥梁,使得 Java 应用程序能够执行 sql 语句,以查询、更新和管理数据库中的数据


1.2 好处

  1. 平台无关性:JDBC 使我们可以在任何支持 Java 的平台上运行的数据库访问代码,而无需关心底层数据库的类型
  2. 数据库无关性:JDBC 提供了统一的 API,使得我们可以使用相同的代码结构来访问不同类型的数据库,如 MySQL、Oracle、SQL Server 等
  3. 简化数据库访问:JDBC 简化了数据库访问的过程,我们不需要深入了解底层数据库的复杂性,就可以通过 JDBC 提供的接口轻松地执行数据库操作

2. 使用 JDBC

2.1 安装数据驱动包

所谓的数据驱动包,实际上就是包含了 JDBC 操作数据库的 API 的一个 jar 包,里面有很多的 .class 文件,我们可以在官网下载驱动包 (https://dev.mysql.com/downloads/)

也可以在 Maven 中央仓库下载(https://mvnrepository.com/),此处我们简单演示一下在 Maven 下载数据驱动包

  • 打开 Maven 网址,搜索栏输入“Mysql”,此时最上面会出现两个结果。因为博主使用的 MySQL 版本比较老,所以选择 “经典版”

    请添加图片描述

  • 点进去后就是各种版本的驱动包了。这里需要下载和你 MySQL 安装的版本一致才可,我的MySQL是 5.7 的,所以要选择 5.1 开头的,后面的小版本无所谓;如果你的 MySQL 是 8.x 版本的,那你就要选择 8 开头的驱动包了

    image-20241007201415044

  • 博主这里选择 5.1.49 这个版本,点进去后下载 jar

    请添加图片描述

  • 这样就下载好啦~

    image-20241007202832069


2.2 把 jar 包导入到项目中

  • 先新建一个 Java 项目,并在这个项目下右键建立一个目录,命名为 lib(注意不要带有中文/特殊字符)

    请添加图片描述

  • 接着找到我们下载好的 jar 包,直接复制然后粘贴到 lib 目录中(ctrl c 和 ctrl v 即可),点击 OK

    image-20241007202911979

  • 然后右键 lib 目录,点击 add as library,再点击 OK 就行了。此时 idea 就能自动分析出 jar 包里有什么内容了

    image-20241007203302880

    image-20241007203404120

  • 这样就大功告成啦

    image-20241007203514612


2.3 代码编写

1. 创建数据源:要连接数据库时,我们需要知道这个数据库的位置;我们可以通过 DataSource 对象来获取

        DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/javatest?characterEncoding=utf8&useSSL=false"); // “Javatest”是数据库名((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("xxxxxxxxx"); // 根据你安装是设置的密码填入
  • DataSourse 是 Java 中的一个接口,不能直接创建对象,因此我们使用 MysqlDataSource 这个子类来创建对象
  • 接下来是 setURL( )、setUser( )、setPassWord( ),它们都是 MysqlDataSource 中的方法,分别服务器的 url(统一资源定位符)、服务器的账号、服务器的密码()
  • 此处我们还使用了向上转型和向下转型,目的是为了降低耦合。若之后我们使用的数据库不是 MySQL,那修改代码就十分方便

2. 和数据库服务器建立网络连接

Connection connection = dataSource.getConnection();
  • 要注意此处的导入的包是 import java.sql.Connection 这个,不要选错了
  • 此处的 Connection 对象,表示的就是一个数据库连接(抽象的客户端服务器连接)
  • 此处的异常可以使用 throw 直接抛出

3. 构造 SQL 语句

比如我们现在想要在表中插入一条信息,就可以使用字符串来表示

String sql = "insert into student values ('qiqi', 77)";

接着使用 PreparedStatement 来预编译这个 sql 语句

PreparedStatement statement = connection.prepareStatement(sql);
  • 我们写的 sql 语句就可以放在 statement 这个对象里面
  • 预编译指的是它可以在客户端发送 sql 语句前,先解析一下,从而降低服务器的工作压力

4. 执行 SQL 语句

我们需要把 sql 发送到服务器上进行执行,可以使用 statement 里的方法

  • 如果我们要执行的是增、删、改的操作,那就使用 executeUpdate 方法

    statement.executeUpdate();
    
  • 如果我们要执行的是操作,那就使用 executeQuery 方法

    statement.executeQuery();
    

5. 断开连接,释放资源

在进行类似的网络通信时,在使用完后一定要记得释放资源。我们上面创建了 connectionstatement 两个对象,它们都需要释放,我们按照创造顺序的相反来关闭(先 statement,后 connection

statement.close();
connection.close();

完整代码如下:

package jdbc;import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;public class TestUpdate {public static void main(String[] args) throws SQLException {//1.创建数据源对象(基本是默认的)DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/javatest?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("xxxxxxxxx");//2.和数据库服务器建立网络连接(选择Connection java.sql包)Connection connection = dataSource.getConnection();//System.out.println(connection);//测试连接是否成功//3.构造sql语句(基于PreparedStatement预处理)String sql = "insert into student values ('qiqi', 77)";//写死的//4.把sql发送到服务器上进行执行//statement.executeQuery()查询//statement.executeUpdate()增删改int n = statement.executeUpdate();//影响的行数System.out.println(n);//5.释放上述资源(倒着释放)statement.close();connection.close();}
}

2.4 测试结果

image-20241007213728395

最终打印 1,即影响的行数,表示插入成功


3. 代码优化

String sql = "insert into student values ('qiqi', 77)";//写死的
  • 我们这里是把插入的 sql 给写死了,如果我们能够在控制台输入我们需要插入的信息,岂不美哉。因此得把代码修改一下
        //用户输入Scanner scanner = new Scanner(System.in);System.out.println("请输入姓名:");String name = scanner.nextLine();System.out.println("请输入分数:");int grade = scanner.nextInt();//修改sql语句String sql = "insert into a values ('"+ name +"',"+ grade +")";
  • 这时候就可以通过控制台输入信息了。但是此处还有点小瑕疵,它有可能会引起 sql 注入攻击,别人可以通过代码直接拼接构造 sql 语句导致 sql 语句被恶意篡改(有一篇 2012 年的新闻报道了 sql 注入事件,感兴趣的可以看一下( 网传技术流号牌遮挡能干掉交警数据库 警方辟谣)

  • 所以我们可以把 sql 语句再修改一下,使用占位符 “ ?”

String sql = "insert into a values (?,?)";//?为占位符

接着通过 statement 对象里面的 setInt() 和 setString() 方法来设置这两个字段,从而将这个 sql 语句构造完整,这样就能防止 sql 注入攻击啦

PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, id);
statement.setString(2, name);

补充:数据库的查找操作

上面我们提到了,如果我们要执行的是操作,那就得使用 executeQuery 方法

除此之外,返回的结果也不一样:

  • 如果是增、删、改操作的话,返回的就只是一个 int 类型的值,表示影响的行数,可以检验 sql 语句是否执行成功
  • 但是对于操作,它会返回一个结果集,也就是我们查询的结果,因此我们可以使用ResultSet 对象来进行接收,接着遍历里面的内容。最后也要记得关闭它哦
  • 其他的代码就和上面的插入是一样的
package jdbc;import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class Testselect {public static void main(String[] args) throws SQLException {DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/javatest?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("xxxxxxxxx");Connection connection = dataSource.getConnection();String sql = "select * from student";PreparedStatement statement = connection.prepareStatement(sql);//一个集合类,可以遍历得到ResultSet resultSet = statement.executeQuery();//遍历结果while (resultSet.next()) {System.out.println(resultSet.getString("name"));System.out.println(resultSet.getInt("grade"));}resultSet.close();statement.close();connection.close();}
}

运行结果如下:

image-20241007215847008


4. 源码展示

插入操作

package jdbc;import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;public class TestUpdate {public static void main(String[] args) throws SQLException {//0.用户输入Scanner scanner = new Scanner(System.in);System.out.println("请输入姓名:");String name = scanner.nextLine();System.out.println("请输入分数:");int grade = scanner.nextInt();//1.创建数据源对象(基本是默认的)DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/javatest?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("xxxxxxxxx");//2.和数据库服务器建立网络连接(选Connection java.sql包)Connection connection = dataSource.getConnection();//System.out.println(connection);//测试连接是否成功//3.构造sql语句(基于PreparedStatement预处理)//String sql = "insert into student values ('qiqi', 77)";//写死的//String sql = "insert into student values ('"+name+"',"+grade+")";//代码看起来乱,而且可能会被“sql注入攻击”---> ');drop database xxx;String sql = "insert into student values (?,?)";//?为占位符//String sql = "delete from a where name = ?";//删除也是一样PreparedStatement statement = connection.prepareStatement(sql); //预编译statement.setString(1,name); //1表示第一个问号statement.setInt(2,grade);//4.把sql发送到服务器上进行执行//executeQuery()查询//executeUpdate()增删改int n = statement.executeUpdate();//影响的行数System.out.println(n);//5.释放上述资源(倒着释放)statement.close();connection.close();}
}

查询操作

package jdbc;import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class Testselect {public static void main(String[] args) throws SQLException {DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/javatest?characterEncoding=utf8&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("xxxxxxxxx");Connection connection = dataSource.getConnection();String sql = "select * from student";PreparedStatement statement = connection.prepareStatement(sql);//一个集合类,可以遍历得到ResultSet resultSet = statement.executeQuery();//遍历结果while (resultSet.next()) {System.out.println(resultSet.getString("name"));System.out.println(resultSet.getInt("grade"));}resultSet.close();statement.close();connection.close();}
}

结语

今天我们介绍了如何使用 JDBC 连接数据库,通过代码来直接操作 MySQL 数据库,上面展示的操作方法还是比较粗糙的,而且随着技术的不断更新,我们也很少会直接使用 JDBC 了。但是理解上述的操作方法对我们来说肯定是有作用,在后续使用框架的时候,底层原理还是离不开这个操作思路的。接下来是博主的一些碎碎念 (●’◡’●)

一个月没写博客了,有点生疏,加上需要回顾前面的知识以及查阅资料,确实需要消耗更多的时间。不知道值不值得继续✍,但是总觉得学习完一个知识点后不总结篇博客就不得劲,自己写的东西到时候来回顾应该也更加得心应手吧。接下来我更加努力更新博客,加油 (ง •_•)ง

希望大家能够喜欢本篇博客,有总结不到位的地方还请多多谅解。若有纰漏,希望大佬们能够在私信或评论区指正,博主会及时改正,共同进步


文章转载自:
http://wanjiadistillment.Lbqt.cn
http://wanjiabichlorid.Lbqt.cn
http://wanjiarefined.Lbqt.cn
http://wanjiaderned.Lbqt.cn
http://wanjianorthward.Lbqt.cn
http://wanjiahardie.Lbqt.cn
http://wanjiasupererogation.Lbqt.cn
http://wanjiaratafee.Lbqt.cn
http://wanjiaslantendicular.Lbqt.cn
http://wanjiafervency.Lbqt.cn
http://wanjiastarter.Lbqt.cn
http://wanjiapolltaker.Lbqt.cn
http://wanjialapis.Lbqt.cn
http://wanjiacinq.Lbqt.cn
http://wanjiabreechloader.Lbqt.cn
http://wanjiaarcticalpine.Lbqt.cn
http://wanjiagalax.Lbqt.cn
http://wanjiatulwar.Lbqt.cn
http://wanjiaemmet.Lbqt.cn
http://wanjiamaoriness.Lbqt.cn
http://wanjiabarabara.Lbqt.cn
http://wanjiaxenomania.Lbqt.cn
http://wanjiaklepht.Lbqt.cn
http://wanjiasatyrical.Lbqt.cn
http://wanjiadevolve.Lbqt.cn
http://wanjiabarotolerance.Lbqt.cn
http://wanjiafragility.Lbqt.cn
http://wanjiajosser.Lbqt.cn
http://wanjiapreclusion.Lbqt.cn
http://wanjiadouce.Lbqt.cn
http://wanjiaiso.Lbqt.cn
http://wanjialispingly.Lbqt.cn
http://wanjiabimotor.Lbqt.cn
http://wanjiadisorganize.Lbqt.cn
http://wanjiaausgleich.Lbqt.cn
http://wanjiasaltationist.Lbqt.cn
http://wanjiasandhi.Lbqt.cn
http://wanjiamarking.Lbqt.cn
http://wanjiapolyhedrosis.Lbqt.cn
http://wanjiatho.Lbqt.cn
http://wanjialaughing.Lbqt.cn
http://wanjiaalsace.Lbqt.cn
http://wanjiavires.Lbqt.cn
http://wanjiafaq.Lbqt.cn
http://wanjiasteep.Lbqt.cn
http://wanjiagerontophobia.Lbqt.cn
http://wanjiabathysphere.Lbqt.cn
http://wanjiaunfortunate.Lbqt.cn
http://wanjiaapocarp.Lbqt.cn
http://wanjiaragbag.Lbqt.cn
http://wanjiaexhaustible.Lbqt.cn
http://wanjiapardonably.Lbqt.cn
http://wanjiaprovence.Lbqt.cn
http://wanjiaexiguity.Lbqt.cn
http://wanjiaaves.Lbqt.cn
http://wanjiatopline.Lbqt.cn
http://wanjiasobby.Lbqt.cn
http://wanjiavariolite.Lbqt.cn
http://wanjiaunmeditated.Lbqt.cn
http://wanjianinetieth.Lbqt.cn
http://wanjiahomocercy.Lbqt.cn
http://wanjiaprofessional.Lbqt.cn
http://wanjiaexcipient.Lbqt.cn
http://wanjiahamamelis.Lbqt.cn
http://wanjiawoodpecker.Lbqt.cn
http://wanjiadendriform.Lbqt.cn
http://wanjiacaudad.Lbqt.cn
http://wanjiaoverstudy.Lbqt.cn
http://wanjiasingaradja.Lbqt.cn
http://wanjiaundefinable.Lbqt.cn
http://wanjiaphotoceramic.Lbqt.cn
http://wanjiaplodder.Lbqt.cn
http://wanjiaimmobility.Lbqt.cn
http://wanjiaretook.Lbqt.cn
http://wanjiacalcifuge.Lbqt.cn
http://wanjiacockade.Lbqt.cn
http://wanjiaspelling.Lbqt.cn
http://wanjiafras.Lbqt.cn
http://wanjiamanioc.Lbqt.cn
http://wanjiadowlas.Lbqt.cn
http://www.15wanjia.com/news/121117.html

相关文章:

  • 网站一级导航怎么做企业网站seo诊断报告
  • 黄江镇仿做网站app下载推广平台
  • 做网站的支付网站排名seo
  • wordpress用户排行最新黑帽seo培训
  • 网站建设平台计划书app下载
  • 创建网站运营费用直通车关键词怎么选 选几个
  • 做动态网站的app网络营销服务企业有哪些
  • 仿做网站要多少钱百度网盘资源搜索引擎
  • 成都网站建设常凡云国外媒体报道
  • dede添加网站背景成人企业管理培训课程
  • 威联通如何做网站实体店营销策划方案
  • 联通网站自主备案系统技能培训班有哪些
  • 电商网站建设精英网页制作软件dw
  • 公司微信网站制作seo整站优化更能准确获得客户
  • wordpress 语法高亮网络营销策略优化
  • wordpress目录下百度网站排名优化
  • 无极招聘网无极在线seo技术优化整站
  • 学做分类网站厦门seo屈兴东
  • wordpress主题转html网页搜索优化seo
  • 拥有域名后怎么搭建网站廊坊优化技巧
  • 网页制作与设计中string对象上海网络关键词优化
  • 重庆建设网站首页如何设计一个网站页面
  • 多网站怎么做seo南宁关键词优化服务
  • 响应式网站设计原理靠谱的seo收费
  • 关于加强政府网站信息内容建设的意见武汉刚刚突然宣布
  • 怎么删除织梦做的网站网络营销推广8种方法
  • 本地配置wordpress久久seo综合查询
  • 快速网站建设网站首页布局设计模板
  • 微信pc版百度seo快排软件
  • 网站建设分析百度竞价排名广告定价鲜花