jdbc连接mysql

  1. JDBC是什么?java database connectivity(java连接数据库)
  2. JDBC的本质是什么?JDBC本质上是sun公司制定的一套接口,位于java.sql.*下。我们知道,接口有实现者和调用者,各大数据库公司实现JDBC接口(这些实现代码就叫做驱动),我们开发者只需要调用JDBC接口即可实现java连接到各类数据库。
  3. java官方并没有提供JDBC各个公司的实现,我们需要到各个数据库公司下载他们的驱动(JDBC实现类),导入后即可通过JDBC调用各个数据库公司的数据库。
  4. eclipse导入jar包:在对应项目处右键 ->Build Path ->Add External Archives ->选择你下载好的jdbc驱动包.jar ->打开

java连接MySql初级示例

import java.sql.*;

public class Main {

	public static void main(String[] args) {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		String url = "jdbc:mysql://127.0.0.1:3306";
		String user = "root";
		String password = "123456";

		try {
			// 1. 注册驱动(作用:告诉java程序,即将连接的是哪个公司的数据库)
			Driver driver = new com.mysql.jdbc.Driver();
			DriverManager.registerDriver(driver);

			// 2. 获取连接(表示JVM进程和数据库进程之间的通道打开了,属于进程间通信,使用完后记得关闭)
			// url是统一资源定位符,表示网络中某一资源的绝对路径,包括协议、IP、Port、资源名 ,格式为协议://ip:port/资源名
			// 这里使用的协议为jdbc:mysql,本机ip地址为127.0.0.1,mysql端口为3306,可以不指定访问资源,也可以指定为某一个database
			conn = DriverManager.getConnection(url, user, password);

			// 3. 创建数据库操作对象(Statement类的对象用于执行sql语句的对象)
			stmt = conn.createStatement();

			// 4. 执行sql语句(DDL、DQL、DML等操作)
			// executeUpdate用来处理增删改,返回受到影响的行数
			// executeQuery用来处理查
			String sql = "select * from DatabaseName";
			rs = stmt.executeQuery(sql);

			// 5. 处理查询结果(只有执行的是DQL才需要该步骤,因为若没有查询则没有查询结果)
			while (rs.next()) {
				// 无论数据库中的数据类型是什么,一律返回string
				// JDBC中所有的下标从1开始
				// 获取第1,2,3,列
				// 可以按照第几列访问,也可以按照列名或查询语句指定的别名处理
				System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
				System.out
						.println(rs.getString("id") + "\t" + rs.getString("amount") + "\t" + rs.getString("password"));
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.out.print("连接失败");
		} finally {
			// 6. 释放资源,从小到大关闭,需要先判断是否为null,避免空指针异常(关闭JVM和数据库的通信)
			// 这里不要一起try,否则若在某一处发生异常,会直接进入到catch语句块中,后面的资源就没有关闭
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (stmt != null) {
				try {
					stmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

类加载的方式注册驱动

import java.sql.*;

public class Main {

	public static void main(String[] args) {
		// 这是连接sql sever的相关设置
		// String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
		// String url = "jdbc:sqlserver://localhost:1433;DatabaseName=DW";
		// String user = "sa";
		// String password = "123456";
		String driverName = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://127.0.0.1:3306";
		String user = "root";
		String password = "123456";
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;

		try {
			// 1. 注册驱动(作用:告诉java程序,即将连接的是哪个公司的数据库)
			// 使用反射机制加载一个类,可让一个类的静态代码执行,不需要返回值,只需要加载的动作
			Class.forName(driverName);

			// 2. 获取连接(表示JVM进程和数据库进程之间的通道打开了,属于进程间通信,使用完后记得关闭)
			// url是统一资源定位符,表示网络中某一资源的绝对路径,包括协议、IP、Port、资源名 ,格式为协议://ip:port/资源名
			// 这里使用的协议为jdbc:mysql,本机ip地址为127.0.0.1,mysql端口为3306,可以不指定访问资源,也可以指定为某一个database
			conn = DriverManager.getConnection(url, user, password);

			// 3. 创建数据库操作对象(Statement类的对象用于执行sql语句的对象)
			stmt = conn.createStatement();
			// 4. 执行sql语句(DDL、DQL、DML等操作)
			// executeUpdate用来处理增删改,返回受到影响的行数
			// executeQuery用来处理查
			String sql = "select * from 数据库名称";
			rs = stmt.executeQuery(sql);
			// 5. 处理查询结果(只有执行的是DQL才需要该步骤,因为若没有查询则没有查询结果)
			while (rs.next()) {
				// 无论数据库中的数据类型是什么,一律返回string
				// JDBC中所有的下标从1开始
				// 获取第1,2,3,列
				// 可以按照第几列访问,也可以按照列名或查询语句指定的别名处理
				System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3));
				System.out
						.println(rs.getString("id") + "\t" + rs.getString("amount") + "\t" + rs.getString("password"));
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.out.print("连接失败");
		} finally {
			// 6. 释放资源,从小到大关闭,需要先判断是否为null,避免空指针异常(关闭JVM和数据库的通信)
			// 这里不要一起try,否则若在某一处发生异常,会直接进入到catch语句块中,后面的资源就没有关闭
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (stmt != null) {
				try {
					stmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值