1-JDBC-基本使用

仅供学习参考,自我复习使用。

一、JDBC简介

Java DataBase Connectivity: Java 数据库连接,是Sun公司提供的一套与平台无关的用于执行SQL语句的标准javaAPI,可以方便实现多种关系型数据库的统一操作。

二、为什么使用JDBC

Java提供访问数据库规范称为JDBC,而生产厂商提供规范的实现类称为驱动。每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库。
试想假如没有JDBC接口规范,以我们常见的mysql,oracle为例,mysql厂商自己写一套实现类(驱动),oracle自己写一套实现类(驱动),同样的插入操作你叫add,我叫insert,那么这无疑对程序员来说是一个灾难,因为我们需要耗费更多时间学习两套方法,有了JDBC规范,各大厂商按照统一标准写实现类,对于java程序员来说我们只需要掌握JDBC接口中的方法调用即可,通过一套方法可以操作多种数据库。

三、JDBC基础使用

以mysql数据库为例,新建maven工程导入添加驱动依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.30</version>
</dependency>

使用大体分五步:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*测试新建表
*注意导包都是java.sql包下的
*/
public class Demo1 {

	public static void main(String[] args) {
		Connection conn = null;
		Statement sta = null;
		User user = new User();
		try {
			// 1.注册驱动
			Class.forName("com.mysql.jdbc.Driver");//此处会有ClassNotFoundException
			System.out.println("注册成功");
			
			/**
			 * 连接数据库 url:"jdbc:mysql://IP地址:port端口/数据库名称"
			 * DriverManager.getConnection(连接数据库 url, 账号, 密码);
			 */
			//2.获取连接对象
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo2", "root", "123456");
			System.out.println("连接成功");
			
			/**
			 * 编写sql语句,并且执行 获得statement对象--执行sql语句
			 */
			//3.创建sql语句执行对象
			sta = conn.createStatement();
			System.out.println(sta);
			//创建一个表
			String ddl = "create table t1(id int,name varchar(10))";

			/**
			 * excute() 可以执行 ddl dml dql dcl tcl都可以 常用语ddl dcl 返回boolean
			 */
			//4.执行sql
			sta.execute(ddl);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				//5.关闭资源
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

输出:

注册成功
连接成功
com.mysql.jdbc.StatementImpl@5e681e45

Statement sql执行对象

方法介绍
execute()可以执行 ddl dml dql dcl tcl都可以 常用语ddl dcl 返回boolean,但是推荐使用ddl 语言:如create,drop,alter
excutUpdate()常用语dml语句,即增删改 返回int值 表示dml操作影响了几行
executQuery()常用语dql 返回ResultSet 查询的结果集就存在其中
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*测试插入数据dml
*注意导包都是java.sql包下的
*/
public class Demo03 {

	public static void main(String[] args) {
		Connection conn = null;
		Statement sta = null;
		User user = new User();
		try {
			// 1.注册驱动
			Class.forName("com.mysql.jdbc.Driver");//此处会有ClassNotFoundException
			System.out.println("注册成功");
			
			/**
			 * 连接数据库 url:"jdbc:mysql://IP地址:port端口/数据库名称"
			 * DriverManager.getConnection(连接数据库 url, 账号, 密码);
			 */
			//2.获取连接对象
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo2", "root", "123456");
			System.out.println("连接成功");
			
			/**
			 * 编写sql语句,并且执行 获得statement对象--执行sql语句
			 */
			//3.创建sql语句执行对象
			sta = conn.createStatement();
			
			//4.执行sql
			String dml = "insert into t1 values(2,'李四')";
			int result = sta.executeUpdate(dml);
			System.out.println("影响行数:" + result);
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				//5.关闭资源
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

输出:

注册成功
连接成功
影响行数:1
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*测试查询dql
*注意导包都是java.sql包下的
*/
public class Demo4 {

	public static void main(String[] args) {
		Connection conn = null;
		Statement sta = null;
		User user = new User();
		try {
			// 1.注册驱动
			Class.forName("com.mysql.jdbc.Driver");//此处会有ClassNotFoundException
			System.out.println("注册成功");
			
			/**
			 * 连接数据库 url:"jdbc:mysql://IP地址:port端口/数据库名称"
			 * DriverManager.getConnection(连接数据库 url, 账号, 密码);
			 */
			//2.获取连接对象
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo2", "root", "123456");
			System.out.println("连接成功");
			
			/**
			 * 编写sql语句,并且执行 获得statement对象--执行sql语句
			 */
			//3.创建sql语句执行对象
			sta = conn.createStatement();
			
			//4.执行sql语句
			String dql = "select * from t1";
			//返回结果集对象ResultSet 
			ResultSet rs = sta.executeQuery(dql);
			// 处理查询结果,遍历
			while (rs.next()) {// 游标
				// 要知道库中列名和数据类型
				// 参数为列名,方法为相应数据类型的getXXX()方法
				int id = rs.getInt("id");
				String name = rs.getString("name");
				System.out.println("id=" + id + "," + "name=" + name);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				//5.关闭资源
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

注册成功
连接成功
id=1,name=张三
id=2,name=李四

在这里推荐一篇文章ResultSet用法集锦

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值