2在线做网站,广西人社服务器异常,体育西网站开发价格,云主机可以做几个网站目 录 一、步骤 二、数据准备
1.PowerDesigner
#xff08;1#xff09;概述
#xff08;2#xff09;物理数据建模
2.初始化
三、利用 JDBC 实现增、删、改
1.新增
2.修改
3.删除
四、URL
1.概述
2.JDBC 连接 MySQL 的 URL
3.MySQL 的 URL 中其他常用参数
1概述
2物理数据建模
2.初始化
三、利用 JDBC 实现增、删、改
1.新增
2.修改
3.删除
四、URL
1.概述
2.JDBC 连接 MySQL 的 URL
3.MySQL 的 URL 中其他常用参数
1serverTimeZone
2useSSL
3useUnicode
4characterEncoding
4.连接 MySQL 的 JDBC URL 表示实例
五、注册驱动常用方式
1.new Driver 方式
2.Class.forName 方式
3.无需手动注册
六、getConnection 方法 一、步骤 注册驱动 将 JDBC 驱动程序从硬盘上的文件系统加载到内存中使 DriverManager 可以通过一个统一的接口管理该驱动程序的所有连接操作。 获取数据库连接 获取 java.sql.Connection 对象。该对象被创建标志着 MySQL 进程和 JVM 进程间的通道打开。 获取数据库操作对象 获取 java.sql.Statement 对象。负责将 SQL 语句发送给数据库数据库负责执行该 SQL 语句。 执行 SQL 语句处理查询结果集 DQL 操作才会处理查询结果集执行 DQL 语句通常返回查询结果集对象 java.sql.ResultSet;对于 ResultSet 查询结果集而言通常的操作是针对查询结果集进行遍历。 释放资源。 避免资源浪费每次使用完 Connection、Statement、ResultSet 等资源后都需要显示地调用对应的 close 方法释放资源避免资源泄漏在 Java 中当一个对象不再被引用会被 JVM 的垃圾回收机制回收。但在 JDBC 编程中若不显示地关闭资源这些资源不会被 JVM 的垃圾回收机制回收从而导致内存泄漏。 二、数据准备
1.PowerDesigner
1概述 一款专业的建模工具可以完成数据库设计、数据建模、过程建模、企业业务建模等工作。支持多种数据库、多种操作系统适用于大型项目中数据库设计和建模。 2物理数据建模 物理数据模型PDM是数据管理领域中表示数据库逻辑设计后通过物理设计最终转化为实际数据结构的过程。即在逻辑模型的基础上进行数据存储结构设计。 PDM 是一个详细的数据库设计计划描述如何在关系数据库中存储数据物理数据模型包含了所有数据表列、键和索引以及物理存储的详细信息包括数据类型、字段宽度、默认值、统计信息等。 此外PDM 还描述了如何将数据表存储在文件或表空间中这些信息可以帮助开发人员建立实际的数据库系统。 通常PDM 包含了完整的 ER 模型数据表和关系的详细信息包括数据的主键、外键、唯一键、索引、约束条件等。 物理数据模型可以使用各种建模工具来手工创建或自动生成。在数据库设计阶段生成 PDM 是非常重要的一步是将逻辑设计转换为实际实现的重要步骤之一。它可以帮助开发人员在实现时更加清晰地了解数据的存储结构同时也方便后续的数据库管理和维护工作。 2.初始化
drop table if exists t_user;/**/
/* Table: t_user */
/**/
create table t_user
(id bigint auto_increment not null,name varchar(10),passward varchar(20),realname varchar(10),gender char(2),phone varchar(11),primary key (id)
);
insert into t_user(name, passward, realname, gender, phone) values (2231953312, 954387, 张观, 男, 19835142233),(1739884106, 123456, 王岩, 男, 17322567899),(1189356221, qazwsx, 刘歆蕊, 女, 13622567639),(2366781025, 9qq132, 何东洋, 男, 17729036577),(1473332901, qwe123, 余小念, 女, 14823098865);三、利用 JDBC 实现增、删、改
1.新增
public class JDBCInsertTest {public static void main(String[] args) {Connection connection null;Statement statement null;try {// 1.创建驱动Driver driver new com.mysql.cj.jdbc.Driver();DriverManager.registerDriver(driver);// 2.获取连接String url jdbc:mysql://localhost:3306/jdbc;String user root;String password root;connection DriverManager.getConnection(url, user, password);// 3.创建数据库操作对象statement connection.createStatement();// 4.执行 SQLString insertSQL insert into t_user values(null, 2289701965, 123456, 王珊, 女, 19934205358);int count statement.executeUpdate(insertSQL);System.out.println(count 0 ? 插入成功 : 插入失败);} catch (SQLException e) {e.printStackTrace();} finally {// 5.释放资源if (statement ! null) {try {statement.close();} catch (SQLException e) {e.printStackTrace();}}if (connection ! null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}}
} 2.修改
public class JDBCUpdateTest {public static void main(String[] args) {Connection connection null;Statement statement null;try {// 1.创建驱动Driver driver new com.mysql.cj.jdbc.Driver();DriverManager.registerDriver(driver);// 2.获取连接String url jdbc:mysql://localhost:3306/jdbc;String user root;String password root;connection DriverManager.getConnection(url, user, password);// 3.创建数据库操作对象statement connection.createStatement();// 4.执行 SQLString updateSql update t_user set realname 刘梓珊 where realname 王珊;int updateCount statement.executeUpdate(updateSql);System.out.println(updateCount 0 ? 更新成功 : 更新失败);} catch (SQLException e) {e.printStackTrace();} finally {// 5.释放资源if (statement ! null) {try {statement.close();} catch (SQLException e) {e.printStackTrace();}}if (connection ! null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}}
} 3.删除
public class JDBCDeleteTest {public static void main(String[] args) {Connection connection null;Statement statement null;try {// 1.注册驱动Driver driver new com.mysql.cj.jdbc.Driver();DriverManager.registerDriver(driver);// 2.获取连接connection DriverManager.getConnection(jdbc:mysql://localhost:3306/jdbc, root, root);// 3.创建数据库操作对象statement connection.createStatement();// 4.执行 SQLString DeleteSQL delete from t_user where id 4;int count statement.executeUpdate(DeleteSQL);System.out.println(count 0 ? 删除成功 : 删除失败);} catch (SQLException e) {e.printStackTrace();} finally {// 5.关闭资源if (statement ! null) {try {statement.close();} catch (SQLException e) {e.printStackTrace();}}if (connection ! null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}}
} 四、URL
1.概述 统一资源定位符是互联网上标识、定位、访问资源的字符串。可以用来指定互联网上各种资源的位置URL 通常以 协议、服务器名、服务器端口、路径、查询字符串组成 协议规定访问资源所采用的通信协议服务器名资源所在服务器的 主机名 或 IP 地址服务器端口资源所在服务器的端口号路径资源所在服务器上的路径、文件名等信息查询字符串向服务器提交的参数信息用来定位更具体的资源。 URL 是互联网上资源的唯一标识。 2.JDBC 连接 MySQL 的 URL
jdbc:mysql://host:port/database_name?connection_parameters 协议表示使用的数据库管理系统的类型。【 jdbc:mysql 】表示使用 MySQL 数据库 host:port表示要连接的数据库所在的服务器的 IP 地址或域名以及数据库所在服务器监听的端口号 database_name表示要连接的数据库的名称 connection_parameters其他可选参数包括连接的超时时间、使用的字符集、连接池相关配置等。 3.MySQL 的 URL 中其他常用参数
1serverTimeZone MySQL 服务器时区默认为 UTC可以通过该参数指定客户端和服务器的时区 在 JDBC 的 URL 中设置 serverTimeZone 的作用是指定数据库服务器的时区。这个时区信息会影响 JDBC 驱动在处理日期时间相关数据类型时如何将其映射到服务器上的日期时间值。 如果不设置 serverTimeZone则 JDBC 驱动程序默认将使用客户端的时区来处理日期时间数据。在这种情况下如果服务器的时区和客户端机器的时区不同那么处理日期时间数据时可能会出现问题从而导致数据错误或不一致。 2useSSL 是否使用 SSL 安全传输协议进行连接默认为 true 当设置为 true 时JDBC 驱动程序将使用 SSL 加密协议来保障客户端和服务器之间的通信安全。这种方式下所有数据都会使用 SSL 加密后再传输可以有效防止数据在传输过程中被窃听、篡改等。当然也要求服务器端必须支持 SSL否则会连接失败 当设置为 false 时JDBC 驱动程序会以明文方式传输数据这种方式下虽然数据传输的速度会更快但也会存在被恶意攻击者截获和窃听数据的风险 在不安全的网络环境下或是要求数据传输安全性较高的情况下建议使用 SSL 加密连接。但使用 SSL 连接会对系统资源和性能消耗有一定的影响特别是当连接数较多时对 CPU 和内存压力都比较大。因此在性能和安全之间需要权衡根据实际应用场景合理设置 useSSL 参数。 3useUnicode 是否使用Unicode编码进行数据传输默认是 true Unicode 是计算机科学中的一种字符编码方案可以用于表示全球各种语言中的字符包括 ASCII 码、中文等。因此使用 Unicode 编码可以确保数据在传输过程中能够正确、完整地呈现各种语言的字符 若设置【useUnicodetrue】JDBC 驱动程序会在传输数据时使用 Unicode 编码。意味着无论数据源中使用的是什么编码方案都会先将数据转换为 Unicode 编码进行传输确保数据能够跨平台、跨数据库正确传输 若设置【useUnicodefalse】则表示使用当前平台默认的字符集进行数据传输。这可能会导致在跨平台或跨数据库时出现字符编码不一致的问题因此通常建议在进行数据传输时启用 Unicode 编码。 4characterEncoding 连接使用的字符编码默认为 UTF-8用于设置 MySQL 服务器和 JDBC 驱动程序之间进行字符集转换时使用的字符集编码 useUnicode 设置的是数据在传输过程中是否使用 Unicode 编码方式。characterEncoding 设置的是数据被传输到服务器之后服务器采用哪一种字符集进行编码。 4.连接 MySQL 的 JDBC URL 表示实例
jdbc:mysql://localhost:3306/jdbc?useUnicodetrueserverTimezoneAsia/ShanghaiuseSSLtruecharacterEncodingutf-8 五、注册驱动常用方式
1.new Driver 方式
// 上边使用的注册驱动方式
Driver driver new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver); 2.Class.forName 方式 还有一种方式且这种方式更为常用。【Class.forName(com.mysql.cj.jdbc.Driver);】其一减少了代码量其二可以方便地将实现类的类名配置到属性配置文件。 // com.mysql.cj.jdbc.Driver 实现类源码
public class Driver extends NonRegisteringDriver implements java.sql.Driver {// Register ourselves with the DriverManager.static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException E) {throw new RuntimeException(Cant register driver!);}}/*** Construct a new driver and register it with DriverManager** throws SQLException* if a database error occurs.*/public Driver() throws SQLException {// Required for Class.forName().newInstance().}} 通过源码可知该实现类中有一个静态代码块静态代码块内调用了 DriverManager 的 registerDriver 方法。 使用【Class.forName(com.mysql.cj.jdbc.Driver);】会完成类加载执行静态代码块。 静态代码块在类加载时执行且只执行一次。可以回顾【Java基础关键_006_面向对象一】。 3.无需手动注册 JDBC 4jdk 6开始不再需要手动注册驱动可以由系统自动完成。但在实际开发中有些数据库驱动程序不支持自动发现功能仍然需要手动注册。所以不建议省略。 # cjjdbc.properties
drivercom.mysql.cj.jdbc.Driver
urljdbc:mysql://localhost:3306/jdbc?serverTimezoneAsia/ShanghaiuseUnicodetruecharacterEncodingutf-8useSSLfalse
userroot
passwordroot
public class JDBCDriverTest {public static void main(String[] args) {ResourceBundle bundle ResourceBundle.getBundle(jdbc.cjjdbc);String driver bundle.getString(driver);String url bundle.getString(url);String user bundle.getString(user);String password bundle.getString(password);try {// 可以省略加载驱动// Class.forName(driver);// 创建连接Connection connection DriverManager.getConnection(url, user, password);System.out.println(connection); // com.mysql.cj.jdbc.ConnectionImpl73d4cc9e} catch (SQLException e) {e.printStackTrace();}
// catch (ClassNotFoundException e) {
// e.printStackTrace();
// }}
} 六、getConnection 方法
public class GetConnectionTest {public static void main(String[] args) {/** getConnection(String url)* */try {Class.forName(com.mysql.cj.jdbc.Driver);String url jdbc:mysql://localhost:3306/jdbc?userrootpasswordroot;Connection c1 DriverManager.getConnection(url);System.out.println(c1 c1);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}/** getConnection(String url, Properties info)* */try {Class.forName(com.mysql.cj.jdbc.Driver);String url jdbc:mysql://localhost:3306/jdbc;Properties info new Properties();info.setProperty(user, root);info.setProperty(password, root);Connection c2 DriverManager.getConnection(url, info);System.out.println(c2 c2);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}/** getConnection(String url, String user, String password)* */try {Class.forName(com.mysql.cj.jdbc.Driver);String url jdbc:mysql://localhost:3306/jdbc;String user root;String password root;Connection c3 DriverManager.getConnection(url, user, password);System.out.println(c3 c3);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}
}