JDBC MySQL 连接

2 篇文章 0 订阅
1 篇文章 0 订阅

JDBC:

指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库。从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库

常见的 JDBC 组件:

JDBC 的 API 提供了以下接口和类:

DriverManager :这个类管理一系列数据库驱动程序。匹配连接使用通信子协议从 JAVA 应用程序中请求合适的数据库驱动程序。识别 JDBC 下某个子协议的第一驱动程序将被用于建立数据库连接。

Driver : 这个接口处理与数据库服务器的通信。你将很少直接与驱动程序互动。相反,你使用 DriverManager 中的对象,它管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息。

Connection : 此接口具有接触数据库的所有方法。该连接对象表示通信上下文,即,所有与数据库的通信仅通过这个连接对象进行。

Statement : 使用创建于这个接口的对象将 SQL 语句提交到数据库。除了执行存储过程以外,一些派生的接口也接受参数。

ResultSet : 在你使用语句对象执行 SQL 查询后,这些对象保存从数据获得的数据。它作为一个迭代器,让您可以通过它的数据来移动。

SQLException : 这个类处理发生在数据库应用程序的任何错误。

JDBC连接Mysql数据库

  1. 加载驱动(先导入mysql-connector-java-5.1.49.jar下载地址

在这里插入图片描述

  1. 连接数据库
    我这边使用的是MySQL5,所以所用的驱动是com.mysql.jdbc.Driver,对于MySQL 8.0.21的版本则使用com.mysql.cj.jdbc.Driver。并且高版本的MySQL需要设置时区,低版本的不需要没有太大影响。
    // 加载驱动
    Class.forName("com.mysql.cj.jdbc.Driver");
    //DriverManager驱动管理类,主要负责获取一个数据库的连接
    conn = DriverManager.getConnection(
        /*
            serverTimezone=GMT%2B8  时区作用:web服务器和mysql服务器的会话期间的mysql服务器时区,就是临时指定mysql服务器的时区。
            characterEncoding=utf-8" 解决乱码问题
        */
            "jdbc:mysql://localhost:3306/ykl_saim?serverTimezone=GMT%2B8&characterEncoding=utf-8",
            "root",
            "123456"
    );
  1. 使用语句操作数据库
		String sql="sql语句 ";
        // 执行sql
        ps = conn.prepareStatement(sql);
  1. 关闭数据库连接,释放资源
    // 释放资源
    ps.close();
    conn.close();

Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。
方法executeQuery
用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。

方法executeUpdate
1、用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
2、使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。创建 表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法executeUpdate 也被用于执行更新表 SQL 语句。

方法execute:
1、用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能 。
2、execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。当执行某个已存储过程 或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。

首先我先简单列举一个查询的案例

Connection conn = null;
PreparedStatement ps = null;
try {
    // 加载驱动
    Class.forName("com.mysql.cj.jdbc.Driver");
    //DriverManager驱动管理类,主要负责获取一个数据库的连接
    conn = DriverManager.getConnection(
        /*
            serverTimezone=GMT%2B8  时区作用:web服务器和mysql服务器的会话期间的mysql服务器时区,就是临时指定mysql服务器的时区。
            characterEncoding=utf-8" 解决乱码问题
        */
            "jdbc:mysql://localhost:3306/ykl_saim?serverTimezone=GMT%2B8&characterEncoding=utf-8",
            "root",
            "123456"
    );
       String sql="sql语句 ";
       // 执行sql
        ps = conn.prepareStatement(sql);
       // 获取查询结果
        ResultSet rs=ps.executeQuery();
       // 查询结果的长度
        int count = rs.getMetaData().getColumnCount();
        while(rs.next()){
            // 通过字段检索(某个查询字段)
            int id  = rs.getInt("id");
            String name = rs.getString("name");
            for(int i=1;i<=count;i++) {
                // 遍历输出查询结果(整条)
                System.out.print(rs.getString(i));
            }
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}finally {
    // 释放资源
    ps.close();
    conn.close();
}

下面是一个简单的增加案例(DDM 共用)

Connection conn = null;
PreparedStatement ps = null;
try {
    // 加载驱动
    Class.forName("com.mysql.cj.jdbc.Driver");
    //DriverManager驱动管理类,主要负责获取一个数据库的连接
    conn = DriverManager.getConnection(
        /*
            serverTimezone=GMT%2B8  时区作用:web服务器和mysql服务器的会话期间的mysql服务器时区,就是临时指定mysql服务器的时区。
            characterEncoding=utf-8" 解决乱码问题
        */
            "jdbc:mysql://localhost:3306/ykl_saim?serverTimezone=GMT%2B8&characterEncoding=utf-8",
            "root",
            "123456"
    );
       String sql="insert语句 ";
       // 执行sql
       ps = conn.prepareStatement(sql);
       //用于增删改操作
       int result = ps.executeUpdate();
       // 查看是否插入成功,成功result就会大于0
       System.out.println(result);
    }
} catch (Exception e) {
    e.printStackTrace();
}finally {
    // 释放资源
    ps.close();
    conn.close();
}

经过长时间的使用我就将那些不变的内容写到了一个工具类中

jdbc.properties配置信息
在这里插入图片描述

public class JDBCUtils {
	/*配置连接*/
	public static Connection getConnection() throws Exception {
		//从配置文件中获取连接资源
	    InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
	    Properties properties = new Properties();
	    properties.load(is);
	    
	    String user = properties.getProperty("user");
	    String password = properties.getProperty("password");
	    String url = properties.getProperty("url");
	    String driver = properties.getProperty("driver");
	 	// 加载驱动
	    Class.forName(driver);
	 	// 获取一个数据库的连接
	    Connection connection = DriverManager.getConnection(url, user, password);
		// 返回一个已经连接好的Connection 
	    return connection;
	}
	 /*释放资源*/
	public static void closeResource(Connection connection, Statement ps){
	    try {
	        if (ps != null)
	            ps.close();
	    } catch (SQLException throwables) {
	        throwables.printStackTrace();
	    }
	    try {
	        if (connection != null)
	            connection.close();
	    } catch (SQLException throwables) {
	        throwables.printStackTrace();
	    }
}

这样下次我们就可以直接调用已经写好的方法,不用再重复写固定的代码了

public void insert(String sql,Object ...args)){
        Connection connection = null;
        PreparedStatement ps = null;
        try {
            //1,获取数据库的连接
            connection = JDBCUtils.getConnection();
 
            //2,预编译sql语句
            ps = connection.prepareStatement(sql);
            //3,填充占位符:i+1表示的是sql中的位置,args[i]:可变参数占位符,就是把值写进去
            for (int i = 0; i < args.length; i++) {
                ps.setObject(i+1,args[i]);
            }
            //4,执行操作
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //5,关闭资源
            JDBCUtils.closeResource(connection,ps);
        }
    }

总结

使用JDBC连接Mysql数据库并进行基本功能就已经完成了,这些只是最简单的数据库操作,实际开发过程中操作数据库比这些复杂多了,包括事务处理,存储过程、流数据等等,就需要使用JDBC更高级的功能了。

梦想也许在今天无法实现,但重要的是,它在你心里。重要的是,你一直在努力,加油!!!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用JDBC连接MySQL数据库,你需要完成以下几个步骤: 1. 下载并安装MySQL JDBC驱动程序:首先,你需要从MySQL官方网站下载MySQL Connector/J驱动程序。将下载的JAR文件添加到你的项目中。 2. 导入必要的类:在你的Java代码中,导入以下类: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; ``` 3. 建立连接:使用以下代码建立与MySQL数据库的连接: ```java String url = "jdbc:mysql://localhost:3306/your_database_name"; String username = "your_username"; String password = "your_password"; Connection connection = null; try { connection = DriverManager.getConnection(url, username, password); // 连接成功 } catch (SQLException e) { e.printStackTrace(); // 连接失败 } ``` 在上面的代码中,`url`变量指定了MySQL服务器的地址和端口号,以及要连接的数据库名称。`username`和`password`变量分别是你的MySQL用户名和密码。 4. 执行SQL语句:一旦连接建立成功,你就可以使用`connection`对象执行SQL语句了。例如,执行一个查询并获取结果集: ```java // ... try { String sql = "SELECT * FROM your_table_name"; Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql); // 处理结果集 while (resultSet.next()) { // 获取每一行的数据 int id = resultSet.getInt("id"); String name = resultSet.getString("name"); // ... } // 关闭结果集、语句和连接 resultSet.close(); statement.close(); connection.close(); } catch (SQLException e) { e.printStackTrace(); } ``` 在上面的代码中,首先创建了一个`Statement`对象,然后使用`executeQuery()`方法执行查询语句,并通过`ResultSet`对象获取结果集的数据。 记得在使用完连接、语句和结果集后,要关闭它们以释放资源。 这就是使用JDBC连接MySQL数据库的基本步骤。你可以根据自己的需求执行其他的SQL操作,如插入、更新或删除数据等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值