您的位置:首页 > 新闻 > 会展 > 新媒体营销的定义_网络营销课程实训报告_新闻热点_青岛建站seo公司

新媒体营销的定义_网络营销课程实训报告_新闻热点_青岛建站seo公司

2024/10/11 15:51:07 来源:https://blog.csdn.net/liwuqianhzc/article/details/142420873  浏览:    关键词:新媒体营销的定义_网络营销课程实训报告_新闻热点_青岛建站seo公司
新媒体营销的定义_网络营销课程实训报告_新闻热点_青岛建站seo公司

准备工作

JDBC(Java Data Base Connectivity, Java数据库连接)是Java程序和数据库之间的桥梁,包含了一套Java定义的用于执行SQL语句的接口,使开发者能够编写数据库的程序。JDBC 的主要作用是:与数据库建立连接、发送SQL语句和处理数据库执行结果。

创建Maven工程并配置国内镜像

我们先找到我们IDEA的文件所在位置:右键IDEA,点击属性:

在这里插入图片描述
点击文件所在位置,找到plugins 文件夹,点击进去:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
首先先备份一份setting ,然后再进行修改,然后打开,找到下面的一串代码:
在这里插入图片描述
将其替换为下面的代码:

  <mirrors><!-- mirror| Specifies a repository mirror site to use instead of a given repository. The repository that| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.|--><!-- 加入如下mirror节点 使用国内阿里云仓库镜像  开始 --><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror><mirror><id>central</id><mirrorOf>*</mirrorOf><name>aliyun central</name><url>https://maven.aliyun.com/repository/central</url></mirror><mirror><id>spring</id><mirrorOf>*</mirrorOf><name>aliyun spring</name><url>https://maven.aliyun.com/repository/spring</url></mirror><!-- 加入如下mirror节点 使用国内阿里云仓库镜像  结束-->
</mirrors>

这样我们的 maven 就变成国内的了。


然后配置驱动包:
打开官网https://mvnrepository.com/

再上面的搜索栏输入 mysql :
在这里插入图片描述

第一个是最新版本,第二个包含历史版本,我们点第一个即可:
在这里插入图片描述

找到你对应的MySQL版本,然后点击进去:
在这里插入图片描述

点击下面的红色框内容进行复制

在这里插入图片描述

回到你的IDEA,创建Mudule 工程
在这里插入图片描述

在这里插入图片描述

点击pom.xml 文件下:
在这里插入图片描述

然后把你粘贴的内容复制过来:先输入标签头<dependencies><dependencies>,在他们之间将内容粘贴过去:

在这里插入图片描述
如果右上角出现下面这个,点击m 即可:
在这里插入图片描述

连接MySQL 并操作

我们在新建好的mudule下找到 java 源代码源文件新建一个类。

DriverManager

DataSource驱动管理类,用于管理JDBC驱动程序,可以从驱动程序中获取数据库连接

DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javatest?characterEncoding=utf8" +"&allowPublicKeyRetrieval=true&useSSL=false", "root", "123456");

DataSource

DataSource数据源是DriverManager的替代方案,是获取数据库连接的首选方法,推荐使用。

		//创建MySQL 数据源对象MysqlDataSource mysqlDataSource = new MysqlDataSource();//设置数据库连接串mysqlDataSource.setURL("jdbc:mysql://127.0.0.1:3306/javatest?characterEncoding=utf8" +"&allowPublicKeyRetrieval=true&useSSL=false");//用户名mysqlDataSource.setUser("root");//密码mysqlDataSource.setPassword("123456");

区别

DriverManager每次调用getConnection方法都会初始化一个新的连接,使用完成后会关闭真实连接,导致资源浪费。

DataSource使用了连接池技术,会在初始化时创建⼀定数量的数据库连接,这些连接可以重复使用,关闭时并不是真正关闭连接,而是将连接归还给连接池,以供后续使用,有效地提高资源利用率和和性能

Connection

获得数据库连接

Statement

用于执行静态SQL语句并返回执行结果,由于只能执行静态语句,所以这里会有一个问题,假设一个语句中需要动态的参数,比如where子句中的条件,那么只能通过字符串拼接的方式组装完成的SQL语句,比如:

String sql = "select student_id, sn, name, mail, class_id from student where name = '"+ name + "'";

SQL 注入

由于是静态sql 语句,那么可能会被别有用心的人利用这里面的漏洞,来查询到不应该查到的数据:

在这里插入图片描述

这是一个非法的参数,通过这个sql 注入,将所有的用户信息都暴露储出去了,这是十分危险的,所以我们一般不会使用Statement 来进行sql 查询,而是使用下面的 PreparedStatement。

PreparedStatement

预编译SQL语句对象,SQL语句被预编译并存储在PreparedStatement对象中,可以使用该对象多次执行SQL语句,同时可以解决SQL注入问题。

String sql = "select student_id, sn, name, mail, class_id from student where name = ?";

使用占位符?来填充未知。

后续将占位符替换为真实数据。

ResultSet

获得sql 查询的结果集。

ResultSet对象维护了一个指向当前数据行的游标,最初游标位于第一行之前,调用next方法将游标移动到下一行,当ResultSet中没有更多的数据行时返回false,所以可以在while循环中使用它来遍历结果集。

ResultSet接口提供了getter方法(getBoolean、getLong等),用于从当前行检索列值,可以使用列的索引号或列的名称来检索值。一般来说,使用列索引会更有效率,索引编号从1开始,按照从左到右的顺序读取。

executeQuery()

用于执行 select 操作

executeUpdate()

执⾏结果返回的是⼀个整形,通常⽤于insert,update,delete操作

关闭资源

最后我们要关闭我们开启的mysql 资源,最后开启的资源最先关闭。

代码演示

package org.example;import java.sql.*;
import java.text.MessageFormat;
import java.util.Scanner;public class Demo1_DriverManager {public static void main(String[] args) {Connection connection = null;Statement statement = null;ResultSet resultSet = null;try {//1.加载数据库厂商提供的驱动包Class.forName("com.mysql.cj.jdbc.Driver");//2.获得数据库连接connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javatest?characterEncoding=utf8" +"&allowPublicKeyRetrieval=true&useSSL=false", "root", "123456");//3.创建statement 对象statement = connection.createStatement();//4. 定义SQLSystem.out.println("请输入学生姓名:");Scanner in = new Scanner(System.in);//接收用户的输入String name = in.nextLine();String sql = "select student_id, sn, name, mail, class_id from student where name = '"+ name + "'";//5.执行 sql 语句resultSet = statement.executeQuery(sql);//6. 对结果集进行遍历,获取数据// 如果存在下一条记录,会返回true ,否则返回 falsewhile(resultSet.next()) {//获得学生信息long stuId = resultSet.getLong(1);String stuSn = resultSet.getString(2);String stuNam = resultSet.getString(3);String stuMail = resultSet.getString(4);long claId = resultSet.getLong(5);//输出结果System.out.println(MessageFormat.format("学生编号={0}, 学号={1}, 姓名={2}, 邮箱={3}, 班级编号={4}",stuId,stuSn,stuNam,stuMail,claId));}} catch (ClassNotFoundException e) {throw new RuntimeException(e);} catch (SQLException e) {throw new RuntimeException(e);} finally {//资源关闭if(resultSet != null) {try {resultSet.close();} catch (SQLException e) {throw new RuntimeException(e);}}if(statement != null) {try {statement.close();} catch (SQLException e) {throw new RuntimeException(e);}}if(connection != null) {try {connection.close();} catch (SQLException e) {throw new RuntimeException(e);}}}}
}
package org.example;import com.mysql.cj.jdbc.MysqlDataSource;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.MessageFormat;
import java.util.Scanner;public class Demo2_DataSource {public static void main(String[] args) {//创建MySQL 数据源对象MysqlDataSource mysqlDataSource = new MysqlDataSource();//设置数据库连接串mysqlDataSource.setURL("jdbc:mysql://127.0.0.1:3306/javatest?characterEncoding=utf8" +"&allowPublicKeyRetrieval=true&useSSL=false");//用户名mysqlDataSource.setUser("root");//密码mysqlDataSource.setPassword("123456");//定义JDBC 的数据源对象DataSource dataSource = mysqlDataSource;//定义连接对象Connection connection = null;//定义预处理SQL对象PreparedStatement statement = null;//定义结果集ResultSet resultSet = null;try{//1. 通过数据源进行数据库的连接connection = dataSource.getConnection();// 2. 获取预处理SQL执行对象//定义要执行的SQLString sql = "select student_id, sn, name, mail, class_id from student where name = ?";statement = connection.prepareStatement(sql);//接收用户的输入System.out.println("请输入学生姓名:");Scanner in = new Scanner(System.in);String name = in.nextLine();//3. 用真实的数据替换占位符statement.setString(1,name);// 4. 执行SQL,获取结果集resultSet = statement.executeQuery();//遍历结果集while(resultSet.next()) {//获得结果集的每一列数据long stuId = resultSet.getLong("student_id");String stuSn = resultSet.getString("sn");String stuNam = resultSet.getString("name");String stuMail = resultSet.getString("mail");long claId = resultSet.getLong("class_id");//输出结果集System.out.println(MessageFormat.format("学生编号={0}, 学号={1}, 姓名={2}, 邮箱={3}, 班级编号={4}",stuId,stuSn,stuNam,stuMail,claId));}} catch (SQLException e) {throw new RuntimeException(e);} finally {//关闭资源if(resultSet != null) {try {resultSet.close();} catch (SQLException e) {throw new RuntimeException(e);}}if(statement != null) {try {statement.close();} catch (SQLException e) {throw new RuntimeException(e);}}if(connection != null) {try {connection.close();} catch (SQLException e) {throw new RuntimeException(e);}}}}
}

在select 语句书写中记得把查询的列写上,就算你是全列查询,也最好写上,因为后续遍历的时候会用到,也方便后续代码的书写

MessageFormat.format 可以格式化我们输出的数据形式。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com