JDBC入门(一)

一、概念

Java Database Connectivity,Java数据库连接
本质: 是官方(Sun公司)定义了一套操作所有关系型数据库的规则 ,即接口。各个数据库厂商区实现这套接口,提高数据库驱动jar包,我们可以使用这套接口编程,真正执行的代码是驱动Jar包中的实现类

二、入门步骤:

  1. 导入驱动jar包 mysql-connector-java
    链接:
    驱动jar包8.0.16
    提取码:n9ux
  2. 获取数据库连接对象 Connertion
  3. 定义sql
  4. 获取执行sql语句的对象 Ststement
  5. 执行sql,接受返回的结果
  6. 处理结果
  7. 释放资源
create database jdbctest;
use jdbctest;
create table user(
	uid int primary key auto_increment,
	username varchar(20),
	password varchar(20),
	name varchar(20)
);
insert into user values (null,'aaa','111','张三');
insert into user values (null,'bbb','222','李四');
insert into user values (null,'ccc','333','王五');
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

import com.mysql.jdbc.Driver;

public class jdbcdemo1 {
	@Test
	//JDBC入门程序
	public void demo1() {
		//加载驱动
		try {
			Class.forrName("com.mysql.jdbc.Driver");
			//获得连接
			Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctest", "root", "12345");
			String sql = "select*from user";
			java.sql.Statement stm = conn.createStatement();
			//执行sql
			ResultSet resultSet = stm.executeQuery(sql);
			while(resultSet.next()) {
				int uid = resultSet.getInt("uid");
				String username = resultSet.getString("username");
				String password = resultSet.getString("password");
				String name = resultSet.getString("name");
				System.out.println(uid + "  " + username + "  " + password + "  " + name);
			}
			//释放资源
			resultSet.close();
			stm.close();
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

步骤:

1. 注册驱动

Class.forName("com.mysql.jdbc.Driver");

2. 获得链接

Connection getConnection(String url,String username,String password);
url写法:jdbc:mysql://localhost:3306/jdbcname
		jdbc:协议
		mysql:子协议
		localhost:主机名
		3306:端口号

默认连本机:url简写jdbc:mysql:///jdbcname

3. Connection :连接对象

作用:创建执行sql的语句对象
Statement createStatement() :执行sql语句,有sql注入漏洞的风险
PreparedStatement prepareStatement(String sql) :预编译sql语句,解决sql注入的漏洞
CallableStatement prepareCall(String sql) :执行sql中存储的问题

进行事务的管理
setAutoCommit(boolean autoCommit) :设置事务是否自动提交
commit(): 事务提交
rollback():事务回滚

4.Statement:执行SQL

主要作用:执行SQL语句
boolean execute(String sql):执行SQL,执行select语句返回true,否则返回false
ResultSet executeQuery(String sql):执行SQL中的select语句
int executeUpdate(String sql):执行SQL中的insert/update/delete语句

执行批处理操作
addBatch(String sql):添加到批处理
executeBatch():执行批处理
clearBatch():清空批处理

ResultSet:结果集

结果集:就是查询语句(select)语句查询的结果的封装
主要作用:结果集获取查到的结果的
next(),针对不同的类型的数据可以使用getXXX()获取数据

三、JDBC的资源释放

jdbc程序运行完后,要释放程序在运行过程中,创建的那些与数据库进行的交互的现象,这些对象通常是ResultSet、Satement、Connection对象

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

import com.mysql.jdbc.Driver;
import com.mysql.jdbc.Statement;

public class jdbcdemo1 {
	Connection conn = null;
	Statement stmt = null;
	ResultSet rs = null;
	@Test
	//JDBC入门程序
	public void demo1() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctest", "root", "12345");
			String sql = "select*from user";
			stmt = (Statement) conn.createStatement();
			ResultSet resultSet = stmt.executeQuery(sql);
			while(resultSet.next()) {
				int uid = rs.getInt("uid");
				String username = rs.getString("username");
				String password = rs.getString("password");
				String name = rs.getString("name");
				System.out.println(uid + "  " + username + "  " + password + "  " + name);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally {
			//释放资源
			if(rs != null) {
				try {
					rs.close();
				}
				catch(SQLException sqlEx) {
					rs = null;
				}
				if(stmt != null) {
					try {
						stmt.close();
					} catch (SQLException e) {
						e.printStackTrace();
					}
					stmt = null;
				}
				if(conn != null) {
					try {
						conn.close();
					} catch (SQLException e) {
						e.printStackTrace();
					}
					conn = null;
				}
			}
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值