JDBC操作

2023-11-16

目录

一、实现JDBC步骤

1.注册驱动

 1.1导入驱动包

1.1异常处理

2.创建连接

2.1导包

2.2处理异常

3.得到执行sql语句的Statement对象

3.1修改数据操作

 3.2删除数据操作

3.3插入数据操作

3.4查询数据操作 

4.执行sql语句,并返回结果,并处理结果

5.关闭资源

6.完整代码

6.1修改数据操作代码

6.2查询数据操作代码

二、JDBC封装函数

1.建立两个类(工具类、测试类)

2.全局变量声明

3.初始化数据库链接函数

4.修改数据函数

5.查询数据函数

6.关闭资源函数

7.测试代码

7.1修改数据测试代码

7.2查询数据测试代码


一、实现JDBC步骤

1.注册驱动

 1.1导入驱动包

1.1异常处理

更正一下是 Class.forName("com.mysql.jdbc.Driver"),上面代码写错了。 

//注册驱动(加载驱动类,5.0版本)
try {
    Class.forName("com.mysql.jdbc.Driver");
	System.out.println("加载驱动成功");
} catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
	System.out.println("加载驱动失败");
	e.printStackTrace();
}

2.创建连接

2.1导包

2.2处理异常

//创建数据库连接
String url = "jdbc:mysql://127.0.0.1:3306/score";
//jdbc:mysql: //数据库主机地址:端口号/数据库名
String user="root"; //数据库用户名
String password="268875"; //数据库密码
Connection connection = DriverManager.getConnection(url,user,password);			
System.out.println("获取数据库连接成功");

3.得到执行sql语句的Statement对象

3.1修改数据操作

//修改数据操作
String sql = "update student SET Sage=? where Sid=?";
PreparedStatement pre = connection.prepareStatement(sql);
//prepareStatement--预编译SQL语句执行对象
//把数据设置到占位符位置
pre.setInt(1, 39);
//向sql语句中第一个位置设置数据
pre.setString(2,"100010");
//向sql语句中第二个位置设置数据

 3.2删除数据操作

//删除数据操作
String sql="delete from student where Sid=?";
pre = connection.prepareStatement(sql);
pre.setString(1, "100020");

3.3插入数据操作

//插入数据操作
String sql="insert into student values(?,?,?,?,?)";
//问号为占位符,使用占位符主要为了避免sql注入
pre = connection.prepareStatement(sql);
pre.setString(1,"100010");
pre.setString(2,"黎明");
pre.setInt(3,30);
pre.setString(4,"女");
pre.setString(5,"手机游戏");

3.4查询数据操作 

//查询数据操作
String sql="select * from student";
pre = connection.prepareStatement (sql);
ResultSet set = pre.executeQuery();
//查询,返回的是结果集,类似于一张虚拟表
//把虚拟表中的数据取出来,即解析结果集
while(set.next()){
/* 调用next()方法时,
 * 游标向下移动一行,
 * 判断是否存在数据,
 * 并把数据放入结果集中,
 * 返回值为布尔类型。
 */
	/* 通过数所在位置去获取数据,这个方法不可取
	 * System.out.println(set.getString(1));
	 * System.out.println(set.getString(2));
	 * System.out.println(set.getInt(3));
	 * System.out.println(set.getString(4));
	 * System.out.println(set.getString(5));
	 */
	System.out.println(set.getString("Sid"));
	System.out.println(set.getString("Sname"));
	System.out.println(set.getInt("Sage"));
	System.out.println(set.getString("Ssex"));
	System.out.println(set.getString("Szhuanye"));
}

4.执行sql语句,并返回结果,并处理结果

/* 执行sql语句
 * 对于jdbc来说操作数据库只有两种操作
 * 1.修改(增,删,改);2.查询(查)
 */
int row = pre.executeUpdate();
//修改,返回影响数据库的行数
System.out.println(row);
if(row>0){
    System.out.println("修改数据成功");
}else{
	System.out.println("修改数据失败");
}

5.关闭资源

finally{
//关闭资源,finally无论代码是否出现异常都会被执行
	try {
		if(connection!=null)
			connection.close(); //关闭数据库链接
		if(pre!=null)
			pre.close(); //关闭语句执行对象
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
}

6.完整代码

对于jdbc来说操作数据库只有两种操作:
1.修改(增,删,改);

2.查询(查)。

6.1修改数据操作代码

package java_projects;

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

public class JDBCTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//设置成全局变量,便于后面直接关闭资源
		Connection connection = null;
		PreparedStatement pre = null;
		
		//注册驱动(加载驱动类,5.0版本)
		try {
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("加载驱动成功");
			
			//创建数据库连接
			String url = "jdbc:mysql://127.0.0.1:3306/score";
			//jdbc:mysql://数据库主机地址:端口号/数据库名
			String user="root";	//数据库用户名
			String password="268875"; //数据库密码
			connection = DriverManager.getConnection(url,user,password);			
			System.out.println("获取数据库连接成功");
			
//			//通过数据库链接对象获取sql语句执行对象Statement
//			//修改数据
//			String sql = "update student SET Sage=? where Sid=?";
//			pre = connection.prepareStatement(sql);
//			//prepareStatement--预编译SQL语句执行对象
//			//把数据设置到占位符位置
//			pre.setInt(1, 39);
//			//向sql语句中第一个位置设置数据
//			pre.setString(2,"100010");
//			//向sql语句中第二个位置设置数据
			
//			//删除数据操作
//			String sql="delete from student where Sid=?";
//			pre = connection.prepareStatement(sql);
//			pre.setString(1, "100020");
			
			//插入数据操作
			String sql="insert into student values(?,?,?,?,?)";
			//问号为占位符,使用占位符主要为了避免sql注入
			pre = connection.prepareStatement(sql);
			pre.setString(1,"100010");
			pre.setString(2,"黎明");
			pre.setInt(3,30);
			pre.setString(4,"女");
			pre.setString(5,"手机游戏");
			
			int row = pre.executeUpdate();
			//修改,返回影响数据库的行数
			System.out.println(row);
			if(row>0){
				System.out.println("修改数据成功");
			}else{
				System.out.println("修改数据失败");
			}
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("加载驱动失败");
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("获取数据库连接失败");
			e.printStackTrace();
		}finally{
		//关闭资源,finally无论代码是否出现异常都会被执行
			try {
				if(connection!=null)
					connection.close(); //关闭数据库链接
				if(pre!=null)
					pre.close(); //关闭语句执行对象
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}		
		}
	}
}

6.2查询数据操作代码

package java_projects;

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

public class JDBCTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//设置成全局变量,便于后面直接关闭资源
		Connection connection = null;
		PreparedStatement pre = null;
		ResultSet set = null;

		//注册驱动(加载驱动类,5.0版本)
		try {
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("加载驱动成功");
			
			//创建数据库连接
			String url = "jdbc:mysql://127.0.0.1:3306/score";
			//jdbc:mysql://数据库主机地址:端口号/数据库名
			String user="root";	//数据库用户名
			String password="268875";	//数据库密码
			connection = DriverManager.getConnection(url,user,password);			
			System.out.println("获取数据库连接成功");
			
			//查询数据操作
			String sql="select * from student";
			pre = connection.prepareStatement (sql);
			set = pre.executeQuery();
			//查询,返回的是结果集,类似于一张虚拟表
			//把虚拟表中的数据取出来,即解析结果集
			while(set.next()){
			/* 调用next()方法时
			 * 游标向下移动一行
			 * 判断是否存在数据
			 * 并把数据放入结果集中
			 * 返回值为布尔类型
			 */
				/* 通过数所在位置去获取数据,这个方法不可取
				 * System.out.println(set.getString(1));
				 * System.out.println(set.getString(2));
				 * System.out.println(set.getInt(3));
				 * System.out.println(set.getString(4));
				 * System.out.println(set.getString(5));
				 */
				System.out.println(set.getString("Sid"));
				System.out.println(set.getString("Sname"));
				System.out.println(set.getInt("Sage"));
				System.out.println(set.getString("Ssex"));
				System.out.println(set.getString("Szhuanye"));
			}
			
			/* 执行sql语句
			 * 对于jdbc来说操作数据库只有两种操作
			 * 1.修改(增,删,改);2.查询(查)
			 */

		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("加载驱动失败");
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("获取数据库连接失败");
			e.printStackTrace();
		}finally{
		//关闭资源,finally无论代码是否出现异常都会被执行
			try {
				if(connection!=null)
					connection.close(); //关闭数据库链接
				if(pre!=null)
					pre.close(); //关闭语句执行对象
				if(set != null)
					set.close(); //关闭结果集资源
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}	
		}
	}
}

二、JDBC封装函数

1.建立两个类(工具类、测试类)

2.全局变量声明

private	static	Connection connection;
private	static	PreparedStatement pre;
private	static	ResultSet set;
private	static	String url="jdbc:mysql://127.0.0.1:3306/score";
private	static	String user="root";
private	static	String password="268875";
private	static	String driver="com.mysql.jdbc.Driver";

3.初始化数据库链接函数

public static void initConnection(){
	try {
		Class.forName(driver);
		connection = DriverManager.getConnection(url, user, password);
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

4.修改数据函数

/**
 * 修改数据操作(增、删、改)
 * @param o 数组第一个位置放sql语句,后面的所有位置放sql语句中对应的值
 * @return 影响的行数
 */
public static int update(Object ... o) {
    /* Object ... o
	 * 该写法叫可变参数
	 * 可以传递0到无限个object参数进来
	 * 把可变参数当成数组使用即可
	 */
	try {
		pre=connection.prepareStatement(o[0].toString());
		for(int i=1;i < o.length;i ++){
			pre.setObject(i, o[i]); 
			//不知道设置什么类型,直接使用Object
		}
		return pre.executeUpdate();			
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally{
		close(); //关闭资源函数
	}
	return 0;
}
	

5.查询数据函数

	/**
	 * 查询操作
	 * @param o 数组第一个位置放sql语句,后面的所有位置放sql语句中对应的值
	 * @return 返回结果集
	 */
	public static ResultSet select(Object ... o){
		initConnection();
		try {
			pre=connection.prepareStatement(o[0].toString());
			for(int i = 1;i < o.length;i ++){
				pre.setObject(i, o[i]);
			}
			set = pre.executeQuery();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}//结果集资源不能被关闭,所以没有finally语句
		return set;
	}

6.关闭资源函数

public static void close(){
	try {
		if(connection!=null)
			connection.close(); //关闭数据库链接
		if(pre!=null)
			pre.close(); //关闭语句执行对象
		if(set!=null)
			set.close(); //关闭结果集资源
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

7.测试代码

7.1修改数据测试代码

package java_projects;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JDBCTool.initConnection();
		JDBCTool.update("insert into student values(?,?,?,?,?)","100020","黑暗",50,"男","电脑游戏");
//		int row=JDBCTool.update("insert into student values(?,?,?,?,?)","100020","黑暗",50,"男","电脑游戏");
//		if(row>0){
//			System.out.println("修改数据成功");
//		}else{
//			System.out.println("修改数据失败");
//		}
	}
}

7.2查询数据测试代码

package java_projects;

import java.sql.ResultSet;
import java.sql.SQLException;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JDBCTool.initConnection();
		ResultSet set = JDBCTool.select("select * from student");
		try {
			while(set.next()){
				System.out.println(set.getString("Sid"));
				System.out.println(set.getString("Sname"));
				System.out.println(set.getInt("Sage"));
				System.out.println(set.getString("Ssex"));
				System.out.println(set.getString("Szhuanye"));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			JDBCTool.close();
			/*结果集必须在使用完之后再关闭
			 * 在查询数据函数中不能调用关闭资源函数
			 * 因为查询数据函数返回的是结果集
			 */
		}
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDBC操作 的相关文章

  • 使用唯一索引删除重复项

    我在两个表字段 A B C D 之间插入 相信我已经在 A B C D 上创建了唯一索引以防止重复 然而我以某种方式简单地对这些做了一个正常的索引 因此插入了重复项 这是2000万条记录的表 如果我将现有索引从普通索引更改为唯一索引 或者只
  • 插入后用触发器更新多行(sql server)

    我有一个表 orderDetails 包含订单的产品 产品编号 color size quantity 和一个表库存 产品编号 size color stock 订单完成后 我使用此查询将项目插入表中orderDetails INSERT
  • 检查 SELECT 子句中的另一个表中是否存在某个值

    我想查询 table1 中的名称 并查找 table2 中是否存在名称 我有以下查询 但它似乎不起作用 有什么建议我做错了什么吗 select A name CASE WHEN A name in select B name in tabl
  • 是什么阻止“Select top 1 * from TableName with (nolock)”返回结果?

    我目前正在运行以下语句 select into adhoc san savedi from dps san savedi record 这花了很长时间 我想看看它走了多远 所以我运行了这个 select count from adhoc s
  • PostgreSQL Age() 函数:在不同月份登陆时出现不同/意外的结果

    今天 我在 PostgreSQL 9 6 中运行此查询时遇到了无法解释的结果 SELECT age 2018 06 30 2018 05 19 AS one age 2018 07 01 2018 05 20 AS two 两列的预期结果
  • 使用 WHILE 创建虚拟数据

    我尝试使用 a 在表中插入一些虚拟数据WHILE 但它运行得非常非常慢 我在想也许我写的代码不正确 你能看一下并确认一下吗 Insert dummy data DECLARE i int Content int SET i 5001 WHI
  • MySQL 全文搜索不适用于某些单词,例如“house”

    我已经在 3 个字段中的一小部分记录上设置了全文索引 也尝试了 3 个字段的组合 并得到了相同的结果 有些单词返回结果很好 但某些单词如 house 和 澳大利亚 不这样做 有趣的是 澳大利亚 和 家乡 这样做 这似乎是奇怪的行为 如果我添
  • PHP PDO相关:更新SQL语句未更新数据库内容

    我正在尝试使用准备好的语句来实现更新语句PHP http en wikipedia org wiki PHP脚本 但它似乎没有更新数据库中的记录 我不确定为什么 所以如果您能分享一些见解 我将不胜感激 Code query UPDATE D
  • 将两行中相似的列数据合并到一行中

    我的查询结果具有以下特征 LIDCode Total Domain Region VSE Version AB02 15 GLOBAL CANLA 0 6943 AB02 5925 CENTRE STREET SW 31 GLOBAL CA
  • 创建表作为 select 删除 postgresql 中的非空约束

    在 postgres sql 中 创建表时 select 删除了表上的非空约束 例如 对此没有单一命令的解决方案 要基于现有表 包括所有约束 创建表 请使用 create table B like a including constrain
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • 将记录分成两列

    我的数据库中有一个 学生 表 其中包含大约 5 000 条记录 我想将这些记录显示在two分区 如何在不执行查询两次的情况下做到这一点 仅使用单个查询 显示示例http www freeimagehosting net uploads f1
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • postgres 有 CLOSEST 运算符吗?

    我正在寻找这样的东西 给定一个表格 id number 1 7 2 1 25 3 1 01 4 3 0 查询SELECT FROM my table WHEREnumberCLOSEST 1 将返回第 3 行 我只关心数字 现在我有一个程序
  • ActiveRecord3死锁重试

    Rails 3 或 ActiveRecord 3 是否有任何插件可以复制旧版本死锁重试 http agilewebdevelopment com plugins deadlock retry插入 或者 该插件仍然适用于 Rails 3 吗
  • 限制 SQL Server 连接到特定 IP 地址

    我想将 SQL Server 实例的连接限制为特定 IP 地址 我想阻止来自除特定列表之外的任何 IP 地址的任何连接 这是可以在 SQL Server 实例或数据库中配置的东西吗 听起来像是你会使用Windows防火墙 http tech
  • 当“修复表”查询在 mysql 中不起作用时该怎么办?

    我收到此错误 表的存储引擎不支持修复 当我尝试使用查询修复表时repair table tbl college master 表是 innodb 类型 但我不知道我收到此错误 See 手册 http dev mysql com doc re
  • 如何有效地从 DB2 表中删除所有行

    我有一个大约有 50 万行的表 我想删除所有行 如果我做简单的delete from tbl 事务日志已满 我不关心这种情况下的事务 无论如何我都不想回滚 我可以删除许多事务中的行 但是有更好的方法吗 如何有效地从 DB2 中的表中删除所有
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query

随机推荐

  • java list 写入txt_java 如何用io流 读取list集合里我需要的内容,然后写入到.txt文件里?各位大侠请赐教...

    展开全部 import org junit Test import java io import java util ArrayList import java util List public class TestIo 路径 privat
  • 微信小程序详细图文教程-10分钟完成微信小程序开发部署发布(3元获取腾讯云服务器带小程序支持系统)

    很多朋友都认为微信小程序申请 部署 发布很难 需要很长时间 实际上 微信和腾讯云同是腾讯产品 已经提供了10分钟 根据准备资源情况 已完成小程序申请认证 完成小程序开发 部署 发布的方式 当然 实现的是基础功能 但是 可以给学习者很便捷的体
  • ios接入GameCenter登录

    iOS接入GameCenter登录很简单 首先 在target gt Capabilities中打开GameCenter配置 这里的内购 In App Purchase 是因为我需要接内购的SDK 所以我把这个 In App Purchas
  • C++ STL基本容器比较

    摘自 http blog chinaunix net u2 75321 showart 1144742 html 在STL中基本容器有 string vector list deque set map set 和map都是无序的保存元素 只
  • 在vue中使用高德地图的上浮下钻—最简单明了的方法(无需后台接口渲染文字marker)

    在vue中使用高德地图的上浮下钻 最简单明了的方法 无需后台接口渲染文字marker 第一步 安装vue amap npm i vue amap S 第二步 配置main js import VueAMap from vue amap Vu
  • QT之鼠标点击事件学习

    最近在学习点击鼠标事件 在这分享给大家 window h中的配置 ifndef MAINWINDOW H define MAINWINDOW H include
  • Linux如何查看显存

    以下内容由参看资料总结而来 若有不对 望指出 用ctrl alt t打开终端 输入命令 lspci 得到如下 部分 00 1f 6 Signal processing controller Intel Corporation 5 Serie
  • AI相关站点

    人工智能学习网站 产品经理的人工智能学习库 https easyai tech 大白智能 https www jiangdabai com API网站 极速数据 https www jisuapi com api Kate API http
  • Pandas删除某一列的方法

    1 del df columns 改变原始数据 2 df drop columns axis 1 删除不改表原始数据 可以通过重新赋值的方式赋值该数据 3 df drop columns axis 1 inplace True 改变原始数据
  • 怎样将cad布局导出来_cad布局导出模型(CAD 布局图怎么转换成模型图)

    请教大神cad布局转模型exportlayout命令无法生成新 用高版本CAD打开需要转的文件 然后用recover命令 输入完命令会提示打开文件 再次选择第一次 需要转换的 文件 此时会从新打开一个新文件 在新文件中右键模型选项卡点击里面
  • 用python编写一个更好看好用的日志库

    相信现在很多做自动化测试 开发 一般用的都是python的logging来记录日志 但是 logging确实不是很好看 只有一个红色的 在控制台中也不好分辨 那能不能自己写一个好看点的呢 我已经写好一个了 需要的可以直接下载安装试试 下面来
  • RabbitMQ图文详解

    重新整理了涉及资料的一些语言描述 排版而使用了自己的描述 对一些地方做了补充说明 比如解释专有名词 类比说明 对比说明 注意事项 提升了总结归纳性 尽可能在每个知识点上都使用一句话 关键词概括 更注重在实际上怎么应用 提出并回答了一些问题
  • C++ 函数重载(overroad) 覆盖(override) 隐藏(hide) 的区别

    C 函数重载 overroad 覆盖 override 隐藏 hide 的区别 原文转自 http blog chinaunix net u 15921 showart 227111 html 成员函数被重载的特征 1 相同的范围 在同一个
  • 2020年数学建模国赛C题题目和解题思路

    2020年数学建模国赛C题题目 在实际中 由于中小微企业规模相对较小 也缺少抵押资产 因此银行通常是依据信贷政策 企业的交易票据信息和上下游企业的影响力 向实力强 供求关系稳定的企业提供贷款 并可以对信誉高 信贷风险小的企业给予利率优惠 银
  • 安全防御——防火墙一

    安全防御 防火墙一 1 什么是防火墙 2 互联网为什么会出现防火墙 3 状态防火墙工作原理 4 防火墙如何处理双通道协议 5 防火墙如何处理nat 6 你知道哪些防火墙 以及防火墙的技术分类 防火墙种类 1 硬件防火墙 2 软件防火墙 个人
  • Qt入门(12)——Qt国际化

    应用的国际化就是使应用成为能被非本国的人使用的过程 有的情况下 国际化很简单 例如 使一个US应用可被Australian或者British用户理解 工作可能少于几个拼写修正 但是使一个US应用可以被Japanese用户使用 或者一个Kor
  • React 在componentDidMount使用 echarts,样式未加载导致Echart自适应div出错

    只需要修改componentDidMount中加入setTimeout gt echarts代码 import React Component from react import Main css 引入 ECharts 主模块 ts ign
  • 创建聚集索引

    一 ibuf init at db start Creates the insert buffer data structure at a database startup and initializes the data structur
  • 深度学习(十九)——FCN, SegNet, DeconvNet, DeepLab, ENet, GCN

    前DL时代的语义分割 续 Grab cut Grab cut是微软剑桥研究院于2004年提出的著名交互式图像语义分割方法 与N cut一样 grab cut同样也是基于图划分 不过grab cut是其改进版本 可以看作迭代式的语义分割算法
  • JDBC操作

    目录 一 实现JDBC步骤 1 注册驱动 1 1导入驱动包 1 1异常处理 2 创建连接 2 1导包 2 2处理异常 3 得到执行sql语句的Statement对象 3 1修改数据操作 3 2删除数据操作 3 3插入数据操作 3 4查询数据