JDBC相关配置和操作
获取数据库连接的几种方式
ps.数据库URL : String url = "jdbc:mysql://localhost:3306/dailytext?useSSL=false&serverTimezone=UTC"
MySQL5.0-->driverClass="com.mysql.jdbc.Driver";
MySQL8.0-->driverClass="com.mysql.cj.jdbc.Driver";
通过Driver实例获取
//创建Driver对象
Driver driver = new Driver();
//数据库URL
String url = "jdbc:mysql://localhost:3306/dailytext?useSSL=false&serverTimezone=UTC";
//Properties存放用户名和密码
Properties prop = new Properties();
prop.setProperty("user", "user1");
prop.setProperty("password", "102850");
//调用connect(),传入url和prop
Connection connect = driver.connect(url, prop);
//获得连接
System.out.println(connect);
通过DriverManager获取
public class Jdbc8Test01 {
// MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/dailytext?useSSL=false&serverTimezone=UTC";
// 数据库的用户名与密码
static final String USER = "root";
static final String PASS = "102850";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
System.out.println("连接数据库...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// 执行查询
System.out.println(" 实例化Statement对象...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, name, url FROM websites";
ResultSet rs = stmt.executeQuery(sql);
// 展开结果集数据库
while (rs.next()) {
// 通过字段检索
int id = rs.getInt("id");
String name = rs.getString("name");
String url = rs.getString("url");
// 输出数据
System.out.print("ID: " + id);
System.out.print(", 站点名称: " + name);
System.out.print(", 站点 URL: " + url);
System.out.print("\n");
}
// 完成后关闭
rs.close();
stmt.close();
conn.close();
} catch (Exception se) {
// 处理 JDBC 错误
se.printStackTrace();
}// 处理 Class.forName 错误
finally {
// 关闭资源
try {
if (stmt != null) stmt.close();
} catch (SQLException se2) {
}// 什么都不做
try {
if (conn != null) conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
System.out.println("Goodbye!");
}
}
从配置文件获取信息
配置文件内容
user=root
password=102850
url=jdbc:mysql://localhost:3306/dailytext?useSSL=false&serverTimezone=UTC
#MySQL8.0以上版本 JDBC 驱动名
driverClass=com.mysql.cj.jdbc.Driver
#MySQL8.0以下版本 JDBC 驱动名
#driverClass=com.mysql.jdbc.Driver
- 实例代码
//获取输入流(两种方法)
InputStream is = Jtest01.class.getClassLoader().getResourceAsStream("jdbc.properties");
//main方法中文件路径为Project下
FileInputStream fis = new FileInputStream("TEST02\\src\\jdbc.properties"); Properties prop = new Properties();
prop.load(fis); //获取配置信息
String user = prop.getProperty("user");
String password = prop.getProperty("password");
String url = prop.getProperty("url");
String driverClass = prop.getProperty("driverClass"); //注册驱动
Class.forName(driverClass); //获得Connection对象,建立与数据库的连接
Connection connection1 = DriverManager.getConnection(url, user, password);
Connection connection2 = DriverManager.getConnection(url, prop); System.out.println(connection1);
System.out.println(connection2);
druid数据库连接池
配置文件druid.proterties
url=jdbc:mysql://localhost:3306/dailytext?serverTimezone=UTC
username=user1
password=102850
driverClassName=com.mysql.cj.jdbc.Driver
initialSiize=10
maxActive=10
代码实现
//从数据库连接池获取连接
Properties prop = new Properties();
//ClassLoader.getSystemClassLoader().getResourceAsStream("String pathName")
// 此种方式读取文件位置默认为src目录下(在main方法和在@Test方法中路径一样)
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("Resource\\druid.properties");
//FileInputStream("String pathName")
// 在main方法中,此种方式读取文件位置默认为Project目录下
// 在@Test方法中,此种方式读取文件位置默认为Module目录下
// FileInputStream is = new FileInputStream("JDBC\\src\\Resource\\druid.properties");
prop.load(is);
DataSource source = DruidDataSourceFactory.createDataSource(prop);
Connection conn = source.getConnection();
System.out.println(conn);
PreparedStatement对比Statement的优点
(好处是基于PreparedStatement的预编译SQL语句功能)
- 解决SQL语句拼串的问题
- 解决SQL注入问题
- 实现对Blob类型的字段操作
- 提高批量操作时的效率
对数据库执行操作
步骤
1.创建文件输入流,从配置文件读取配置信息,
①.文件输入流位于main方法中时文件读取位置在Project目录下
②.文件输入流位于@Test方法中时文件读取位置在Module目录下
2.传入文件流
3.读取配置信息
4.加载JDBC驱动
5.通过DriverManager创建connection对象,获取数据库连接
6.编写SQL语句,使用占位符
7.创建statement(PreparedStatement)对象,传入SQL语句进行预编译
8.填充占位符
9.执行SQL操作
10.关闭资源
示例代码
public static void main(String[] args) {
FileInputStream fis = null;
Connection conn = null;
PreparedStatement pst = null;
try {
//获取文件输入流(main方法中文件位置在当前Project下)
fis = new FileInputStream("JDBC\\jdbc.properties");
//传入文件流
Properties prop = new Properties();
prop.load(fis);
//读取配置信息
String url = prop.getProperty("url");
String driverClass = prop.getProperty("driverClass");
System.out.println(url);
System.out.println(driverClass);
//加载JDBC驱动
Class.forName(driverClass);
//获取数据库连接
conn = DriverManager.getConnection(url, prop);
System.out.println(conn);
//预编译SQL语句
//String sql = "INSERT INTO person(`name`,`age`,`gender`,`birthday`)VALUES(?,?,?,?)";
String sql = "update person set `name`=? where `name`=?";
pst = conn.prepareStatement(sql);
//填充占位符
pst.setString(1, "Eclipse");
pst.setString(2, "Idea");
//执行操作(Insert;Update;Delete)
boolean execute = pst.execute();
System.out.println(execute);
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭连接
try {
if (pst!=null)
pst.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
try {
if (conn!=null)
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
try {
if (fis!=null)
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
JDBC相关配置和操作的更多相关文章
- 阿里云ECS服务器相关配置以及操作---上(初学者)
最近买了一台阿里云的ECS服务器 linux系统 centos镜像,把我相关的一些操作记录下来,供大家参考,不足之处欢迎指正. 首先买的过程就不用介绍了,根据自己的实际需要选择自己想要的配置,点击付钱 ...
- CentOS 配置防火墙操作实例(启、停、开、闭端口)CentOS Linux-FTP/对外开放端口(接口)TomCat相关
链接地址:http://blog.csdn.net/jemlee2002/article/details/7042991 CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作 ...
- Tomcat是什么:Tomcat与Java技、Tomcat与Web应用以及Tomcat基本框架及相关配置
1.Tomcat是什么 Apache Tomcat是由Apache Software Foundation(ASF)开发的一个开源Java WEB应用服务器. 类似功能的还有:Jetty. ...
- 20、Springboot 与数据访问(JDBC/自动配置)
简介: 对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合 Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入 各种xxxTemplate,x ...
- dbcp相关配置
最近在看一些dbcp的相关内容,顺便做一下记录,免得自己给忘记了. 1. 引入dbcp (选择1.4) <dependency> <groupId>com.alibaba. ...
- Tomcat中相关配置详解
tomcat的相关配置 server.xml <Server port="8005" shutdown="SHUTDOWN"> <!-- 属性 ...
- Spring Boot框架 - 数据访问 - JDBC&自动配置
一.新建Spring Boot 工程 特殊勾选数据库相关两个依赖 Mysql Driver — 数据库驱动 Spring Data JDBC 二.配置文件application.properties ...
- Mybatis-Generator相关配置demo
generatorConfig.xml配置信息 首先在resource中配置好datasource.propertise文件,包括数据库信息和mysql-connector的jar包位置. <? ...
- 【Spring】Spring的数据库开发 - 1、Spring JDBC的配置和Spring JdbcTemplate的解析
Spring JDBC 文章目录 Spring JDBC Spring JdbcTemplate的解析 Spring JDBC的配置 简单记录-Java EE企业级应用开发教程(Spring+Spri ...
随机推荐
- Shell:如何写一个多选菜单的脚本
Blog:博客园 个人 翻译自How to Create a Multiple Choice Menu in Bash Scripts 目录 多选菜单脚本介绍 配置输入提示 创建预定选项列表 创建预选 ...
- Activiti工作流学习笔记(三)——自动生成28张数据库表的底层原理分析
原创/朱季谦 我接触工作流引擎Activiti已有两年之久,但一直都只限于熟悉其各类API的使用,对底层的实现,则存在较大的盲区. Activiti这个开源框架在设计上,其实存在不少值得学习和思考的地 ...
- 分形、分形几何、数据可视化、Python绘图
本系列采用turtle.matplotlib.numpy这三个Python工具,以分形与计算机图像处理的经典算法为实例,通过程序和图像,来帮助读者一步步掌握Python绘图和数据可视化的方法和技巧,并 ...
- LeetCode 175. Combine Two Tables 【MySQL中连接查询on和where的区别】
一.题目 175. Combine Two Tables 二.分析 连接查询的时候要考虑where和on的区别 where : 查询时,连接的时候是必须严格满足条件的,满足了才会加入到临时表中. on ...
- Web实验报告
- github文件快速下载
目录 一,提升加载速度 二,提升下载速度 只是想快速下载文件的直接看第二部分. github加载速度慢究其原因还是伟大的墙的存在.我们需要赞美墙,但就算墙很伟大,问题还是要解决的. 有问题就解决问题, ...
- 第四单元总结&期末总结
OO第四单元总结&期末总结 一.第四单元总结 第一次作业 在第四单元的作业中,我的架构是逐步演进的.设计第一次作业的架构时并没有考虑到后续作业会增加新的图,所以直接把类图的实现放在UmlInt ...
- C# .NET Socket 简单实用框架,socket组件封装
参考资料 https://www.cnblogs.com/coldairarrow/p/7501645.html 根据.NET Socket 简单实用框架进行了改造,这个代码对socket通信封装还是 ...
- Asp.Net Core 5 REST API - Step by Step
翻译自 Mohamad Lawand 2021年1月19日的文章 <Asp.Net Core 5 Rest API Step by Step> [1] 在本文中,我们将创建一个简单的 As ...
- Civil3d中 如何用管轴线的变坡点桩号控制其他纵断面数据的显示?
如何用管轴线的变坡点桩号控制其他纵断面数据的显示?如下图所示: 主要进行两步操作,下面以地面高程为例. 第1步: 右键纵断面图,打开纵断面图特性对话框,选择"标注栏"选项卡,分别设 ...