在java中实现数据库连接的步骤(java数据库教程)

JDBC的全称是JavaDataBaseConnectivity,是一套面向对象的连接数据库的程序接口。JDBC技术主要完成以下几个任务:1、与数据库建立一个连接。2、向数据库发送SQL语句。3、处理从数据库返回的结果。事实上,JDBC并不能直接访问数据库的,必须依赖于数据库厂商提供的驱动程序,所以会有加载驱动程序这一步。连接数据库的五大步骤:连接数据库就需要用到以下几个类和接口,…

大家好,又见面了,我是你们的朋友全栈君。

1、JDBC技术

java连接数据是通过JDBC技术,JDBC的全称是Java DataBase Connectivity,是一套面向对象的连接数据库的程序接口。JDBC技术主要完成以下几个任务:
1、与数据库建立一个连接。

2、向数据库发送SQL语句。

3、处理从数据库返回的结果。

事实上,JDBC并不能直接访问数据库的,必须依赖于数据库厂商提供的驱动程序,所以会有加载驱动程序这一步。

2、连接数据库的五大步骤:

连接数据库就需要用到以下几个类和接口,这张图已经写的很明白了,下面来了解以下它们的用法。
在这里插入图片描述

①第一步先加载数据库的驱动程序,可以去官网或者网上找驱动包,代码如下:

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

②DriverManager是类用来管理数据库中的所有驱动程序,调用它的静态方法可以getConnection(String url,String user,String password)与数据库建立连接,(如果不太懂怎么连接或者遇到bug了,可以看我的另一篇文章)连接成功会返回connection对象,后面的接口都会依赖于这个接口对象,代码如下:

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "123456");

③上一步只是成功连接数据库,如果要操作数据库的话,需要发送sql语句,所以还需要一个向数据库发送sql语句的对象,这个对象时通过Connection 对象来获得的,上图中有三个这样的对象,Statement对象用于执行不带参数的简单sql语句;PreparedStatement继承了Statement,用来执行动态的sql语句;CallableStatement继承了PreparedStatement,用于执行存储过程的。这里我用statement接口,代码如下:

Statement state=con.createStatement();

④有了发送sql语句的对象,就可以写sql语句了,statement对象用于执行不带参数的简单sql语句,所以用于查询语句,它会返回一个ResultSet对象,是一个结果集,就是你查询了之后,数据库把你要的数据传回来给你,后面会有图帮助你理解。

查询语句:  ResultSet rs=st.executeQuery("select * from tb_stu");

⑤ResultSet接口类似于一个临时表吧,用来暂时存放你从数据库要回来的数据,给一张图你理解清楚它们之间的关系吧!
在这里插入图片描述
这张图已经很清楚的描述了statement和ResultSet之间的关系,ResultSet对象是一个结果集,类似于一个二维的矩阵吧,它一次只可以看到结果集的一行数据,所以他会有一个指针,一开始指向第一行数据的前面一行(不是指向第一行数据),然后调用它的next()方法可以使指针往下移动一行,如下图所示:
在这里插入图片描述
那怎么把结果集中的数据读出来呢?当然是调用ResultSet对象的getInt()方法啦,java的数据类型众多,当然还有getString()、getFloat()等方法,看你具体是什么类型数据。这里需要注意了,上面的指针是获取行的数据,get方法肯定是用来获取那一列的数据了,比如:getString()方法中的参数可以写成getString(“列名”),又或者是getString(1),它的意思是获取第一列的数据,参数1这里不是索引值,所以不是从零开始的,必须是大于等于1的数值,两种方法是等效的。获取完数据之后那就要关闭相关的流了,记住口诀:先定义的,后关闭,这里的ResultSet对象是依赖statement创建的,而statement又是依赖Connection创建的,所以关闭顺序是ResultSet->statement->Connection。

五大步骤你已经掌握了,有没有发现少了点东西呢?上面使用到的sql的查询语句,还有剩下的三个增加、删除、修改哦。剩下的这三个功能用一条语句来实现,那就是:

int row=st.executeUpdate("delete from tb_stu where id=4");

executeUpdate()方法会返回一个int值,表示受影响的行数,就是我们学数据库的时候,执行一条sql语句就会弹出多少行受影响,上面执行的知识删除语句,也可以执行修改、插入等,附上一个完整的代码段吧!!

package com.hr.main;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Mysql { 
   	
	public static void main(String[] args) { 
   
		Connection con = null;
		Statement st = null;
		ResultSet rs = null;		
		try { 
   
			Class.forName("com.mysql.jdbc.Driver");			
			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "root");
			st=con.createStatement();
			st.executeUpdate("insert into tb_stu(id,name,sex) values(4,'靓仔','男')");
			st.executeUpdate("delete from tb_stu where id=4");
			rs=st.executeQuery("select * from tb_stu");//
			while(rs.next()) { 
   
				int id=rs.getInt("id");
				String name=rs.getString("name");//可以写成: String name=rs.getString("2");
				String sex=rs.getString("sex");				
				System.out.println("编号:"+id+" 姓名:"+name+" 性别:"+sex);
			}
		} catch (SQLException e) { 
   
				e.printStackTrace();		
		} catch (ClassNotFoundException e) { 
   
				e.printStackTrace();
		}finally { 
   
			if(rs!=null) { 
   
				try { 
   
					rs.close();
				} catch (SQLException e) { 
   
					e.printStackTrace();
				}
			}
			if(rs!=null) { 
   
				try { 
   
					rs.close();
				} catch (SQLException e) { 
   
					e.printStackTrace();
				}
			}
			if(rs!=null) { 
   
				try { 
   
					rs.close();
				} catch (SQLException e) { 
   
					e.printStackTrace();
				}
			}
		}
		
	}
	
}

我稍微解释一下这段代码,首先是定义了三个主要的接口,并赋值为null,这样写的好处是后面关闭的时候就可以判断一下它是否为空,然后执行关闭语句。while循环的条件用到了next()方法,如果后面还有数据那就返回true,知道没有数据了,返回false跳出循环。好了,看了这篇文章,基本上java连接数据库是没有大问题了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129788.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 74款android开机动画,修改Android系统开机动画

    74款android开机动画,修改Android系统开机动画Android系统开机动画包括两部分:开机显示的ANDROID文字;ANDROID发光动画。这篇文章说的开机动画是第一种,下面开始正文!1.制作当前屏幕像素的图片(模拟器默认为320*480)使用PS制作一张320*480的图片,保存时选“保存为Web所用格式”,然后在弹开的窗口上,“预设”项选择“PNG-24”,保存为android_logo.png注:好像只支持png-24,其他格式生…

    2022年5月14日
    49
  • keil和keil mdk的区别_keil5数据类型

    keil和keil mdk的区别_keil5数据类型楼主本人用的是stm32f407zgt6的芯片,你可以参照找到你用的芯片对应的文件。      在KeilMDK开发环境里,比如一个无符号32位整形数据会有很多种表示方法:1,unsignedint32(C语言标准表达方法)2,uint32_t;  3,u32;  这三种方式都是在表达同一个意思,可为什么ST的开发人员要搞的这么乱呢?还有其他好多你可能看起来很陌生,

    2022年10月15日
    4
  • 手写Dubbo框架「建议收藏」

    一句话认识DubboDubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成。现在已成为Apache的开源项目。了解Dubbo详细了解直接进dubbo官网看中文文档:http://dubbo.apache.org/zh-cn/docs/user/preface/architecture.html一句话…

    2022年4月11日
    46
  • 用eclipse创建JAVA程序的步骤

    用eclipse创建JAVA程序的步骤如何使用Eclipse进行Java程序开发一般分为如下4个步骤:一、创建Java项目二、创建程序包三、编写Java源程序四、运行Java程序1、创建Java项目1.1打开eclipse1.2点击顶部菜单栏File->New->JavaProject,输入项目名2、创建程序包点击顶部菜单栏,File->New->Package,…

    2022年7月7日
    23
  • 互联网金融风控模型「建议收藏」

    互联网金融风控模型「建议收藏」一、市场调研目前市面主流的风控模型1、互联网金融前10名排行榜(数据截止日期2017-09-12)互联网金融公司排名分别是蚂蚁金服、陆金所、京东金融、苏宁金融、百度金融、腾讯理财通、宜信、钱大掌柜、万达金融和网易理财。1.1蚂蚁金服1.1.1大数据技术对接第三方征信公司芝麻信用分,通过用户信用历史、行为偏好、履约能力、身份特质、人脉关系五个维度对…

    2022年6月14日
    34
  • turtle递归作图绘制谢尔宾斯基地毯【详解】

    turtle递归作图绘制谢尔宾斯基地毯【详解】python数据结构与算法turtle递归作图绘制谢尔宾斯基地毯

    2022年7月13日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号