java对数据库进行查询、插入、删除,更新。_java等待insert执行并查询-程序员宅基地

技术标签: java  sql  


前言

使用java对数据库进行查询、插入、删除,更新。

要使用mysql创建一个名为user的表


以下是本篇文章正文内容,下面案例可供参考

一、查询数据库名称和数据库版本

代码如下(示例):

package jdbc;

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

public class example01 {
    
	public static void main(String[] args) {
    
		Connection conn=null;
		try {
    
			//1.加载驱动类
			Class.forName("com.mysql.jdbc.Driver");
			//2.创建数据库
			String url="jdbc:mysql://localhost:3306/java";
			String username="root";
			String password=null;
			conn=DriverManager.getConnection(url,username,password);
			//获取数据库信息
			DatabaseMetaData metaData = conn.getMetaData();//局部变量,返回一个data.base
			System.out.println(metaData.getDatabaseProductName());
			System.out.println(metaData.getDatabaseProductVersion());
		} catch (Exception e) {
    
			// TODO: handle exception
			e.printStackTrace();
		}finally{
    
			if(conn!=null){
    
				try {
    
					//3.关闭数据库连接
					conn.close();
				} catch (SQLException e) {
    
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}


二、插入、查询、删除、更新

1.插入

1.利用statement进行插入代码如下(示例):

package jdbc;

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

public class example02 {
    
	public static void main(String[] args) {
    
		Connection conn=null;
		Statement stmt=null;
		try {
    
			Class.forName("com.mysql.jdbc.Driver");
			String url="jdbc:mysql://localhost:3306/java";//localhost是数据库java是数据库名字
			String username="root";
			String password=null;
			conn=DriverManager.getConnection(url,username,password);
			stmt=conn.createStatement();
			//参数  sql 返回值   影响记录条数
			String sql="insert into user"+
			"(username,password,name,sex,classes,phone,email)"
					+"value('test','test','test',null,null,null,null)";
			int result=stmt.executeUpdate(sql);
			System.out.println(result);
		} catch (Exception e) {
    
			// TODO: handle exception
			e.printStackTrace();
		}finally{
    
			//Resultset statement Connnection
			if(stmt!=null){
    
				try {
    
					stmt.close();
				} catch (SQLException e) {
    
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
			if(conn!=null){
    
				try {
    
					conn.close();
				} catch (SQLException e) {
    
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
		}
	}
}

2.利用PrepareStatement进行插入代码如下(示例):

package jdbc;

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


public class example03 {
    
	public static void main(String[] args) {
    
		Connection conn=null;
		PreparedStatement pstmt=null;
		try {
    
			Class.forName("com.mysql.jdbc.Driver");
			String url="jdbc:mysql://localhost:3306/java?useUnicode=true&characterEncoding=UTF-8";
			String name="root";
			String password=null;
			conn=DriverManager.getConnection(url,name,password);
			String sql="insert into user"+
						"(username,password,name,sex)"+
						"values(?,password(?),?,'男')";
			pstmt=conn.prepareStatement(sql);
			//1.按照顺序
			//2.所有的参数必须赋值
			//3.索引从1开始
			//4.所有的数据类型都可以用setstring和setobjection
			pstmt.setString(1, "john");
			pstmt.setString(2, "john");
			pstmt.setString(3, "约翰");
			int result=pstmt.executeUpdate();
			System.out.println(String.format("数据库保存了%d个用户", result));
		} catch (Exception e) {
    
			// TODO: handle exception
			e.printStackTrace();
		}finally{
    
			if(conn!=null){
    
				try {
    
					conn.close();
				} catch (SQLException e) {
    
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
			if(pstmt!=null){
    
				try {
    
					pstmt.close();
				} catch (SQLException e) {
    
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
		}
	}
}

2.查询

3.查询代码如下(示例):

//进行查询时需要准备的类
package jdbc;

public class User {
    
	private Integer id;
	private String username;
	private String password;
	private String name;
	private String sex;
	private String classes;
	private String email;
	private String phone;
	//写好成员函数后,右键-》选择resoure-》选择genarate Getters and Setters
	public Integer getId() {
    
		return id;
	}
	public void setId(Integer id) {
    
		this.id = id;
	}
	public String getUsername() {
    
		return username;
	}
	public void setUsername(String username) {
    
		this.username = username;
	}
	public String getPassword() {
    
		return password;
	}
	public void setPassword(String password) {
    
		this.password = password;
	}
	public String getName() {
    
		return name;
	}
	public void setName(String name) {
    
		this.name = name;
	}
	public String getSex() {
    
		return sex;
	}
	public void setSex(String sex) {
    
		this.sex = sex;
	}
	public String getClasses() {
    
		return classes;
	}
	public void setClasses(String classes) {
    
		this.classes = classes;
	}
	public String getEmail() {
    
		return email;
	}
	public void setEmail(String email) {
    
		this.email = email;
	}
	public String getPhone() {
    
		return phone;
	}
	public void setPhone(String phone) {
    
		this.phone = phone;
	}
	
}

package jdbc;

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


public class example06 {
    
	public static void main(String[] args) {
    
		example06 e=new example06();
		User user=e.get(1);
        System.out.println(user.getId()+" "+user.getUsername()+" "+user.getName()+" "+user.getSex()+" "+user.getEmail()+" "
                +user.getPhone());
	}
	public User get(Integer id){
    
		User user=null;
		Connection conn=null;
		PreparedStatement pstmt=null;
		ResultSet rs=null;
		try {
    
			//1.加载驱动类
			Class.forName("com.mysql.jdbc.Driver");
			//2.创建数据库连接
			String url="jdbc:mysql://localhost:3306/java?useUnicode=true&characterEcoding=UTF-8";//数据库地址useUnicode=true&characterEncoding=UTF-8是为了防止中文乱码
			String username="root";//登录名
			String password=null;//密码
			conn=DriverManager.getConnection(url,username,password);
			//3.创建声明
			String sql="select id ,username,name,sex,classes,email,phone"+
						" from user"+//这里要加空格
						" where id=?";//这里要加空格
			pstmt=conn.prepareStatement(sql);
			//4.执行查询
			pstmt.setInt(1, id);
			rs = pstmt.executeQuery();
			//5.处理结果集,资源关闭之前,要把结果集里面的数据取出来
			if(rs.next()){
    
				user =new User();
		//		Integer id1=rs.getInt(1);
		//      建议按照顺序,1,3,4  对	1 4 3 错
		// 		所有的值都可以getString getObject
				Integer id1=rs.getInt("id");
				user.setId(id1);
				user.setUsername(rs.getString(2));
				user.setName(rs.getString(3));
				user.setSex(rs.getString(4));
				user.setClasses(rs.getString(5));
				user.setEmail(rs.getString(6));
				user.setPhone(rs.getString(7));
			}
		} catch (Exception e) {
    
			// TODO: handle exception
			e.printStackTrace();
		}finally{
    
			if(pstmt!=null){
    
				try {
    
					pstmt.close();
				} catch (SQLException e) {
    
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(conn!=null){
    
				try {
    
					conn.close();
				} catch (SQLException e) {
    
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return user;
		
	}
}
/*
 * java bean
 * 		1) 有一定规范的普通的java类java bean
 * 		2) BJB: enterprice java bean
 * 		3) java bean
 * 规范
 * 		1) 属性都是private,setter getter
 * 		Username setUsername getUsername 
 * 		boolean is代替get  state isState
 * 		2) 必须有一个无参数的构造方法
 * 		new User()
 * 		3) 所有的getter,setter方法必须是public
 * 
*/

3.更新

4.更新代码如下(示例):

package jdbc;

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

public class example04 {
    
    public static void main(String[] args) {
    
        Connection conn=null;
        PreparedStatement pstmt=null;
        try {
    
        	//加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/java?useUnicode=true&charaterEcoding=UTF-8";//数据库地址useUnicode=true&characterEncoding=UTF-8是为了防止中文乱码
            String username="root";//登录名
            String password=null;//密码
            conn= DriverManager.getConnection(url,username,password);
            String sql="update user set password=password(?) where id=?";
            pstmt= conn.prepareStatement(sql);
            pstmt.setString(1,"love");
            pstmt.setString(2,"4");
            int result= pstmt.executeUpdate();
            System.out.println(String.format("更新成功%d",result));
        } catch (Exception e) {
    
            e.printStackTrace();
        } finally {
    
            if(conn!=null){
    
                try {
    
                    conn.close();
                } catch (SQLException throwables) {
    
                    throwables.printStackTrace();
                }
            }
            if(pstmt!=null){
    
                try {
    
                    pstmt.close();
                } catch (SQLException throwables) {
    
                    throwables.printStackTrace();
                }
            }
        }
    }
}

4.删除

5.删除代码如下(示例):

package jdbc;

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

public class example03 {
    
    public static void main(String[] args) {
    
        Connection conn=null;
        PreparedStatement pstmt=null;
        try {
    
        	//加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/java?useUnicode=true&characterEcoding=UTF-8";//数据库地址useUnicode=true&characterEncoding=UTF-8是为了防止中文乱码
            String username="root";//登录名
            String password=null;//密码
            conn= DriverManager.getConnection(url,username,password);
            String sql="delete from user"+
                    " where username like concat('%',?,'%')";
            pstmt= conn.prepareStatement(sql);
            pstmt.setString(1,"john");
            int result=pstmt.executeUpdate();
            System.out.println(String.format("数据库受影响的数据有%d条",result));
        } catch (Exception e) {
    
            e.printStackTrace();
        } finally {
    
            if(conn!=null){
    
                try {
    
                    conn.close();
                } catch (SQLException throwables) {
    
                    throwables.printStackTrace();
                }
            }
            if(pstmt!=null){
    
                try {
    
                    pstmt.close();
                } catch (SQLException throwables) {
    
                    throwables.printStackTrace();
                }
            }
        }
    }
}

总结

数据库的增删改查如上

mysql软件以及要用的jar包

链接: mysql-connector-java-5.1.29-bin.jar
提取码:b9do
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V1的分享.

链接: Navcat Premium 11.0.17.zip
提取码:g02h
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V1的分享)

链接: mysql-5.5.16-win32.msi
提取码:cv83
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V1的分享fg )

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45879198/article/details/117228456

智能推荐

yshon对讲机如何调频率_对讲机频率如何设置?-程序员宅基地

文章浏览阅读524次。展开全部TK2118-3118调频率方法1. 按住MONI键+DIAL键开e68a84e8a2ad3231313335323631343130323136353331333363396461机至显示SELF;2. 按一下LOW显CH1,转动频道旋钮"ENC"选择所需信道;3. 按一下PTT键显------2,按一下LOW键显示接收频率,按住 "1"键转动频道旋钮"ENC"调整数,松开 "1"键转动..._yshon对讲机设置

Linux安装Git并配置完成拉取项目代码和提交(1)-程序员宅基地

文章浏览阅读747次,点赞21次,收藏19次。本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!

数模3—Matlab线性规划、非线性规划、多目标规划(超全解法合集)-程序员宅基地

文章浏览阅读1.9w次,点赞49次,收藏461次。生产两种机床,利润分别为XXX, A机器和B机器加工,两种机器工作时间…若不存在不等式约束,用"[]”代替A和b: [x, fval ] = linprog (f,[],[], Aeq, beq, lb, ub)若不存在等式约束,用"[]”代替Aeq和beq: [x, fval ] = linprog Cf,A,b,[],[] ,lb,ub)A机器和B机器加工,有顺序要求,有不同损耗费用,不同的工作时间…每种资产的平均收益率…结论,4个人攻碉楼,2个人追替身的情况下,百姓的士气最大,最大值为220。_线性规划

stm32f103运行python_microPython 有没有在 STM32F103上运行的固件-程序员宅基地

文章浏览阅读1.7k次。匿名用户1级2017-02-20 回答进入第一个个连接进入之后我们就可以选择红色方框Buid Firmware。之后我们就可以下载相应的固件了,但是这个固件是比较早的就是了,是2015年的固件,所以我们接下来要做的就是来自己编译一个固件。首先我们需要将我们的micropython的github开源项目的内容下载下来。选择下图的图标就是可以下载下来。或者在window或者linux底下直接使用Git..._micropython stm32f103

RK3568平台(时间篇)linux内核延时机制_linux延时-程序员宅基地

文章浏览阅读736次,点赞26次,收藏18次。内核中涉及的延时主要有两种实现方式:忙等待或者睡眠等待。前者阻塞程序,在延时时间到达前一直占用CPU,而后者是将进程挂起(置进程于睡眠状态并释放CPU资源)。所以,前者一般用在延时时间在毫秒以内的精确延时,后者用于延时时间在毫秒以上的长延时。为了充分利用 CPU 资源,使系统有更好的吞吐性能,在对延迟时间的要求并不是很精确的情况下,睡眠等待通常是值得推荐的。_linux延时

集合遍历与删除,java list 交集 并集 差集 去重复并集-程序员宅基地

文章浏览阅读75次。2019独角兽企业重金招聘Python工程师标准>>> ..._java 遍历出所有差集

随便推点

oracle的教材,oracle基础入门教材-程序员宅基地

文章浏览阅读83次。建表create table (column_name1 column_type [not null] [check (expression)][default value] [primary key][references (column_name)],column_name2 column_type [not null] [check (expression)][default value] ..._oracle最新教材

MariaDB数据库安装与使用_使用提供的数据库软件包安装数据库mariadb。使用root用户,登录数据库,将反馈信息-程序员宅基地

文章浏览阅读410次。MariaDB数据库管理系统安装yum install mariadb mariadb-server开启systemctl start mariadb开机启动systemctl enable mariadb初始化mariaDB服务操作涉及下面5个步骤。1 设置root管理员在数据库中的密码值(默认空值,直接回车)2 设置root管理员在数据库中的专有密码。(设置密码)3 随后删除匿名账户,并使用r..._使用提供的数据库软件包安装数据库mariadb。使用root用户,登录数据库,将反馈信息

BGP防环机制_allow-as-loop-程序员宅基地

文章浏览阅读2.5k次。EBGP之间使用AS号来防环,可通过命令allow-as-loop来解除。IBGP水平分割:从IBGP邻居学到的BGP路由不发送给IBGP邻居路由反射器中的:originator-id和cluster-id 起源id和集群id路由聚合时会自动产生指向null的路由(无论手动和自动都会)IBGP学到的路由默认不能引入到IGP中( EBGP可以引入),可通过命令配置。用实验来模拟一下最后一个,IBGP学到的路由默认不能引入IGP中,可以用命令修改,import-bgp ibgp。AR2和._allow-as-loop

【个人作品】记之-串口日志记录工具-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏2次。一款用于记录嵌入式设备的串口调试信息设备,目前可以同时支持两路串口输入数据,且串口参数可配置。

Ros系统配置DNS服务器,ros如何设置dns服务器-程序员宅基地

文章浏览阅读835次。ros如何设置dns服务器 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。本章节指导用户为Linux系统的ECS或BMS主机添加域名解析并添加安全组,防止下载Agent安装包与采集监控数据时出现异常。本章节以ECS为例介绍如何修改DNS和添加安全组,BMS操作步骤类似。添加DNS服务..._ros 路由 dns

Google 安装印象笔记剪藏插件_manifest version 2 is deprecated, and support will-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏4次。有时候我们看到较好的网页内容,希望能够保存到自己的笔记中,方便以后的查看有学习。以往我们习惯搜藏网页,但是时间一长容易忘记已收藏的内容,同时有些东西也会随着原作者删除内容而导致之前收藏过的内容无法看到。为此 使用一款笔记工具保存自己想收藏的内容是十分必要的。https://yinxiang.com/product/webclipper/install/可以安装多种浏览器的插件:这里一安装 谷歌浏览器的插件为例。点击下述网址可以查看官方安装插件的说明。https://yinxiang.com/webclipp_manifest version 2 is deprecated, and support will be removed in 2024. see h