JavaEE(二) JDBC编程

目录

1. JDBC简介

2. JDBC访问数据库过程


 


1. JDBC简介

JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。

2. JDBC访问数据库过程

JDBC相关类

接口名说明
Connection

此接口表示与数据的连接

PreparedStatement

此接口用于执行预编译的 SQL 语句

ResultSet

此接口表示了查询出来的数据库数据结果集

Statement

此接口用于执行 SQL 语句并将数据检索到 ResultSet

DriverManager

此类用于加载和卸载各种驱动程序并建立与数据库的连接

ResultSetMetaData

可用于获取关于ResultSet对象中列的类型和属性信息的对象

 

 

 

 

 

 

 

 

JDBC数据库访问过程

驱动下载:链接:https://pan.baidu.com/s/1q-g0fgdwouUrhwRkkx48vQ  提取码:ymi7 ,下载好后创建项目,为了方便展示,我直接创建的Java 动态项目,创建好以后将驱动放在如下目录中就可以使用了。

下面举一个例子

package com.chtw.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class JDBCTest {
	public static void main(String[] args) {
		try {
			//加载驱动程序类DriverManager
			Class.forName("com.mysql.jdbc.Driver");
			//获取连接
			/**
			 * getConnection(url,username,password)
			 * url:jdbc:mysql://127.0.0.1:3306/javaee_day17 
			 * username:password
			 * password:数据库密码
			 */
			Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javaee_day17","root","1728aceAB7");
			
			//sql语句
			String sql = "select * from user";
			/**
			 * Statement对象的作用
			 * 连接一旦建立,就可用来向它所涉及的数据库传送SQL语句,Statement对象用于发送简单的SQL语句
			 * Statement对象如何执行SQL语句
			 * execute:用于执行查询语句和更新语句
			 * executeUpdate:用于执行更新语句,返回int,表示影响的行数
			 * executeQuery:用于执行查询语句,返回ResultSet
			 */
			Statement stmt = conn.createStatement();
			ResultSet srs = stmt.executeQuery(sql);
			while(srs.next()) {
				System.out.println(srs.getString(2));
			}
			
			//将id为14号的username修改为Alice001
			String sqlup = "update user set username='Alice001' where id=14";
			int i = stmt.executeUpdate(sqlup);
			System.out.println(i);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

sql文件

/*
Navicat MySQL Data Transfer

Source Server         : MySQL
Source Server Version : 50617
Source Host           : localhost:3306
Source Database       : javaee_day17

Target Server Type    : MYSQL
Target Server Version : 50617
File Encoding         : 65001

Date: 2019-09-26 10:47:34
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(25) NOT NULL,
  `password` varchar(25) NOT NULL,
  `state` int(2) DEFAULT '0' COMMENT '状态为0正常,状态为1被封号',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'admin', '123456', '0');
INSERT INTO `user` VALUES ('2', 'chtw2329@163.com', '123456', '1');
INSERT INTO `user` VALUES ('14', 'admin1', '123456', '0');

ResultSet

执行给定的 SQL 语句,该语句返回表中记录的结果集  对象。可以对ResultSet结果集进行遍历。对象具有指向其当前数据行的指针。最初,指针被置于第一行之前。next 方法将指针移动到下一行

ResultSet记录集指针的属性(nextlastafter)

通过next()方法判断ResultSet中是否有数据

          使用 getXXX 方法检索数据

          getInt() 用于检索整型值

          getString() 用于检索字符串值

 

PreparedStatement接口继承自Statement,与Statement相比,PreparedStatement增加了在执行SQL调用之前,将输入参数绑定到SQL调用中的功能。

package com.chtw.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class JDBCTest {
	public static void main(String[] args) {
		try {
			//加载驱动程序类DriverManager
			Class.forName("com.mysql.jdbc.Driver");
			//获取连接
			/**
			 * getConnection(url,username,password)
			 * url:jdbc:mysql://127.0.0.1:3306/javaee_day17 
			 * username:password
			 * password:数据库密码
			 */
			Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javaee_day17","root","1728aceAB7");
			
			//PreparedStatement方式
			String sql1 = "select * from user where id = ?";
			PreparedStatement ps = conn.prepareStatement(sql1);
			
			//set设置参数
			ps.setInt(1, 2);
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				System.out.println(rs.getString(2));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

本人联系方式2329095893,欢迎各位进行学习讨论

欢迎关注熊熊出没ING公众号,不定时跟新Java、python、信息安全等相关知识哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值