文档章节

JDBC初步

pmos
 pmos
发布于 2016/08/11 23:30
字数 525
阅读 41
收藏 1

JDBC初步

1、下载MySQL的Connector

将Connector中的jar包加入到classpath中

2、创建Connection

			/*
			 * 1、创建Connection(注意是java.sql包中的Connection)
			 * 创建这个Connection需要指定相应的连接字符串和用户名和密码
			 * 注意:如果不加?useSSL=false或者?useSSL=true会有警告
			 */
			String url = "jdbc:mysql://localhost:3306/pm_test?useSSL=true";
			String user = "root";
			String password = "123456";
			con = DriverManager.getConnection(url, user, password);

3、编写SQL和执行SQL的Statement

			/*
			 * 2、创建SQL
			 * 执行SQL语句需要使用Statement
			 */
			String sql = "select * from t_dep";
			stat = con.createStatement();
			/*
			 * 在获取了stat之后,如果执行的是更新,直接使用stat.executeUpdate(sql)完成更新
			 * 如果执行的是查询,需要通过executeQuery(sql)完成,返回值是一个ResultSet的记录集
			 */

4、执行SQL,如果是查询就操作ResultSet

			//执行查询的情况
			rs = stat.executeQuery(sql);
			/*
			 * 遍历记录集的统一方式
			 */
			while(rs.next()) {
				System.out.println(rs.getInt("id")+","+rs.getString("name"));
				//也可以使用数据库查询出来的投影顺序访问,但是不建议使用该方式,因为投影顺序可能会在将来改变
				//所以一般都用投影的名称访问
//				System.out.println(rs.getInt(1)+","+rs.getString(2));
			}



			//执行更细的情况
//			String sql = "insert into t_dep (name) value ('教育系')";
			String sql = "update t_dep set name='政史系' where id=5";
			stat = con.createStatement();
			//通过stat完成更新
			stat.executeUpdate(sql);

5、释放资源

			/*
			 * 操作完成之后需要释放连接,先释放rs接着释放stat最后释放con
			 */
			try {
				if(rs!=null) rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(stat!=null) stat.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(con!=null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		

PreparedStatement

如果直接使用Statement来执行SQL有可能会存在SQL注入的攻击,所以一般会使用PreparedStatement来替代Statement。

		Connection con = null;
		PreparedStatement ps = null;
		try {
			String url = "jdbc:mysql://localhost:3306/pm_test?useSSL=true";
			String user = "root";
			String password = "123456";
			con = DriverManager.getConnection(url, user, password);
			//使用PreparedStatement一般都是使用?来替代SQL中的变量
			String sql = "insert into t_spe (name,type,dep_id) value (?,?,?)";
			ps = con.prepareStatement(sql);
			//1表示设置第一个?的值
			ps.setString(1, "初等教育");
			ps.setString(2, "师范类");
			ps.setInt(3, 5);
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(ps!=null) ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(con!=null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

 

© 著作权归作者所有

共有 人打赏支持
pmos
粉丝 12
博文 123
码字总数 208836
作品 0
其它
项目经理
私信 提问
JAXB Annotation初步使用

JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java类映射为XML表示方式。JAXB提供两种主要特性:将一个Java对象序列化为XML,以及反向操作,将XML解析成Java对象。换...

秋风醉了
2014/07/02
0
0
Sharding-JDBC 3.0 即将发布,更名 Sharding-Sphere !

8日下午,知名开源数据库中间件 Sharding-JDBC 创始人张亮在朋友圈中发布了一个动态,表示 Sharding-JDBC 3.0 将于近期发布。 从该动态我们可以知道,从 3.0 开始,Sharding-JDBC 将更名为 ...

h4cd
05/08
9.5K
17
安装问题Error: dl failure on line 864

问题描述:在Linux RedHat5.5中安装的JDK1.7,并且通过在profile文件中修改JAVA_HOME,发现java -version命令依旧显示1.4版本,分析原因发现系统不按照profile的设定来执行java 命令,而是通...

datapro
2015/06/03
0
0
JetBrains 开源其 Kotlin 语言,基于 JVM 的新编程语言

近日,JetBrains宣布将其Kotlin编程语言开源,这是一个针对Java和JavaScript平台的现代编程语言,该语言的设计目的是成为Java语言的替代品。 Kotlin 是JetBrains在2010年推出的基于 JVM 的新...

虫虫
2012/02/16
2.3K
11
浅谈Java中的ThreadLocal的多线程应用问题

什么是ThreadLocal?首先要说明的一点是ThreadLocal并不是一个Thread,而是Thread的局部变量。在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了...

小欣妹妹
2017/10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

etcd集群备份和数据恢复

etcd是一个分布式k-v数据库,在kubernetes中使用其管理集群的元数据。这里介绍etcd集群数据的备份和数据恢复的方法和步骤。 本文来自于:https://www.maideliang.com/index.php/archives/25/...

openthings
11分钟前
0
0
「阿里面试系列」面试加分项,从JVM层面了解线程的启动和停止

文章简介 这一篇主要围绕线程状态控制相关的操作分析线程的原理,比如线程的中断,线程的通信等,内容比较多,可能会分两篇文章 阿里面试系列导读:关注我的技术公众号【架构师修炼宝典】一周...

Java架构资源分享
18分钟前
1
0
centos安装confluence全攻略

https://blog.csdn.net/qwer026/article/details/51439076

happyeveryday32
32分钟前
3
0
30 行 Javascript 代码搞定智能家居系统

本文首发于『阿里云 IoT 开发者社区』,更多精彩物联网内容欢迎前往浏览。 智能家居可谓是今年物联网的热门领域,通过智能单品和智能音箱,人们已然把『智能』两个字变成了生活的理所应当。搭...

阿里云官方博客
35分钟前
4
0
sed插入和附加文本基础使用

对于编辑器来说,在数据中增加行算是很基本的操作吧,sed有以下两个操作: 插入(insert)命令(i)会在指定行前增加一个新行 附加(append)命令(a)会在指定行后增加一个新行 还是用下面的文本来测...

woshixin
43分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部