JDBC+MYSQL初始学习
JDBC+MYSQL初始学习
一、学习准备
Eclipse 开发工具 + mysql数据库+navicat 数据库连接工具
Mysql的数据库连接驱动jar包 + testing测试集成+maven工具集成
Jar的获取方法:
1、直接下载需要的jar,导入项目中使用。
2、在maven工程中加入依赖:本文使用的maven依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.0</version>
</dependency>
二、JDBC简单实用步骤:
Jdbc连接数据库操作,主要分为三个步骤:本文以mysql为例操作说明:
2.1加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
2.2获取数据库连接
conn = DriverManager.getConnection(URL, USER, PASSWORD);
2.3对数据库的表结构进行CURD操作
三、JDBC增、删、改、查
3.1 通过navicat 连接本地mysql 创建user表结构:
3.2 建立相关的类来实现jdbc的crud的操作
3.1.1 模型类User
User类用于和数据库user表映射,方便CURD的实时操作。
/**
*
*/
package com.lilin.maven.service.jdbc; /**
* @author lilin
*
*/
public class User { private Integer id; /**
* 用户名称
*/
private String name; /**
* 用户密码
*/
private String password; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String toString() {
return "user 的名称是" + name + " user的密码是:" + password;
} }
3.1.2 工具类JdbcUtil
工具类主要定义了数据库连接的相关属性:URL 、USER、PASSWORD
工具类在静态块中获取了数据库的连接,存放于私有CONN中,同时对外提供了访问连接的公共方法:getConnection
/**
*
*/
package com.lilin.maven.service.jdbc; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; /**
* @author lilin
*
*/
public class JdbcUtil {
public static final String URL = "jdbc:mysql://127.0.0.1:3306/test"; public static final String USER = "root"; public static final String PASSWORD = "1"; private static Connection conn = null; /**
* 静态块 获取数据库的连接
*/
static {
try {
// 1.加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
// 2.获取数据库连接
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
} /**
* 提供获取连接的调用方法
*
* @return
*/
public static Connection getConnection() {
return conn;
}
}
3.1.3 逻辑层类UserService
UserService类,主要是通过调用工具类,获取数据库连接,然后使用连接,配合好编写的sql语句,来对数据库中的user表来进行CURD操作,包含了一系列的常用的处理。
/**
*
*/
package com.lilin.maven.service.jdbc; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; /**
* @author lilin
*
*/
public class UserService { private Connection connection = JdbcUtil.getConnection(); /**
* 新增用户信息
*
* @param user
* @throws Exception
*/
public void addUser(User user) throws Exception {
String sql = " insert into user(NAME,PASS_WORD)values(?,?)";
// 预编译sql语句 在excute的时候真正执行
PreparedStatement ptmt = connection.prepareStatement(sql);
// 传递参数 补充完整的sql
ptmt.setString(1, user.getName());
ptmt.setString(2, user.getPassword());
ptmt.execute();
} /**
* 删除用户信息
*
* @param user
* @throws Exception
*/
public void deleteUser(Integer id) throws Exception {
String sql = " delete from user where ID=?";
// 预编译sql语句 在excute的时候真正执行
PreparedStatement ptmt = connection.prepareStatement(sql);
// 传递参数 补充完整的sql
ptmt.setInt(1, id);
ptmt.execute();
} /**
* 更新用户信息
*
* @param user
* @throws Exception
*/
public void updateUser(User user) throws Exception {
String sql = " update user set NAME=? ,PASS_WORD=? where ID=?";
// 预编译sql语句 在excute的时候真正执行
PreparedStatement ptmt = connection.prepareStatement(sql);
// 传递参数 补充完整的sql
ptmt.setInt(3, user.getId());
ptmt.setString(1, user.getName());
ptmt.setString(2, user.getPassword());
ptmt.execute();
} /**
* 查询单个用户信息
*
* @param user
* @throws Exception
*/
public User getUserByName(String name) throws Exception {
String sql = " select * from user where NAME=?";
// 预编译sql语句 在excute的时候真正执行
PreparedStatement ptmt = connection.prepareStatement(sql);
// 传递参数 补充完整的sql
ptmt.setString(1, name);
ResultSet resultSet = ptmt.executeQuery();
User user = null;
while (resultSet.next()) {
user = new User();
user.setId(resultSet.getInt("ID"));
user.setName(resultSet.getString("NAME"));
user.setPassword(resultSet.getString("PASS_WORD"));
}
return user;
} /**
* 查询所有的用户信息
*
* @return
* @throws Exception
*/
public List<User> getUsers() throws Exception {
// 3.操作数据库 实现增删改查
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from user");
List<User> list = new ArrayList<User>();
User user = null;
while (resultSet.next()) {
user = new User();
String name = resultSet.getString("NAME");
String passWord = resultSet.getString("PASS_WORD");
user.setName(name);
user.setPassword(passWord);
list.add(user);
}
return list;
} }
3.1.4 testNG测试类 jdbctest
JdbcTest中,实现了多个测试方法,userserice中的CURD的方法,全部有对应的测试function:通过运行测试方法,以及配合使用navicat实时查询数据库的user表的数据的实时变化,以便于验证JDBC对于mysql的数据库操作的正确性。
/**
*
*/
package com.lilin.maven.service.jdbc; import java.util.List;
import java.util.Scanner; import org.testng.annotations.Test; /**
* @author lilin
*
*/
public class JdbcTest { private UserService userService = new UserService(); @Test
public void testGetUsers() throws Exception {
List<User> users = userService.getUsers();
for (User user : users) {
System.out.println(user);
}
} @Test
public void testAddUser() throws Exception {
User user = new User();
user.setName("李林");
user.setPassword("12345");
userService.addUser(user);
} @Test
public void testUpdateUser() throws Exception {
User user = new User();
user.setId(1);
user.setName("bb");
user.setPassword("12345");
userService.updateUser(user);
} @Test
public void testDeleteUser() throws Exception {
userService.deleteUser(4);
} @Test
public void testgetUserByName() throws Exception {
User user = userService.getUserByName("bb");
System.out.println(user);
} }
JDBC+MYSQL初始学习的更多相关文章
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- JDBC MYSQL 学习笔记(一) JDBC 基本使用
1.JDBC简单介绍 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范.称之为JDBC. JDBC全称为:Java Data Base Connectivity(java数据 ...
- MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- jdbc的入门学习
一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...
- JDBC主要API学习总结
JDBC主要API学习 一.JDBC主要API简介 JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果. 二.Driver 接口 Java.sql.D ...
- JSP+Struts2+JDBC+Mysql实现的校园宿舍管理系统
项目简介 项目来源于:https://gitee.com/passenger134/javaweb-sushe 本系统基于JSP+Struts2+JDBC+Mysql的校园宿舍管理系统.该系统没有使用 ...
- JSP+Structs+JDBC+mysql实现的诚欣电子商城
项目简介 项目来源于:https://github.com/SuperiorNature/Java-Enterprise-electronic-mall 本系统是基于JSP+Structs+JDBC+ ...
随机推荐
- Python 字符串常用方法 day2
1.去空格和换行符: s = ' a bc ' print(s.strip())#strip(),去掉字符串两边的空格和换行符,无法去除中间的空格 print(s.rstrip())#rstrip() ...
- python 生成HTmL报告页面 V1.3 修改字体颜色
HTML报告V1.3 根据文字内容显示不同的字体颜色: 代码如下: # -*- coding=utf-8 -*- import time,os """ V1.2 1.生成 ...
- Day7 字符串和常用数据结构
字符串和常用数据结构 使用字符串 第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代,计算机处理的信息主要是数值,而世界上的第一台 ...
- anaconda安装的TensorFlow版本没有model这个模块
一.采用git bash来安装,确认已经安装了git 二.手动找到TensorFlow的模块文件夹地址,若不知道,输入以下两行代码: import tensorflow as tf tf.__path ...
- vue,基础整理,夯实基础,为进阶打基础
把基础部分,再次系统的了解一遍,整理成文档.
- 06.系统编程-4.多线程和GIL
为什么有人会说 Python? 多线程是鸡肋?知乎上有人提出这样一个问题,在我们常识中,多进程.多线程都是通过并发的方式充分利用硬件资源提高程序的运行效率,怎么在 Python 中反而成了鸡肋? 有同 ...
- 安装配置开源的laravel项目到本地环境
前言 从https://github.com 上down了一个laravel项目安装到本地环境的时候,其中遇到一些问题,这里梳理并记录下整个流程. git上下载项目代码,部署laravel项目的时候会 ...
- python第十一周:RabbitMQ、Redis
Rabbit Mq消息队列 RabbitMQ能为你做些什么? 消息系统允许软件.应用相互连接和扩展.这些应用可以相互链接起来组成一个更大的应用,或者将用户设备和数据进行连接.消息系统通过将消息的发送和 ...
- Django-xadmin+django-import-export导入导出的实现
转载自:https://blog.csdn.net/zcyuefan/article/details/77748850 1. 需求vs现状1.1 需求要求做一个ERP后台辅助管理的程序,有以下几项基本 ...
- Codeforces 902B - Coloring a Tree
传送门:http://codeforces.com/contest/902/problem/B 本题是一个关于“树”的问题. 有一棵n个结点的有根树,结点按照1~n编号,根结点为1.cv为结点v的色号 ...