JDBC连接MySQL数据库及演示样例

JDBC连接MySQL数据库及演示样例

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术。

一、JDBC基础知识        

        JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,能够为多种关系数据库提供统一訪问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发者提供了一个标准的API,据此能够构建更高级的工具和接口,使数据库开发者能够用纯 Java API 编写数据库应用程序,而且可跨平台执行,而且不受数据库供应商的限制。

1、跨平台执行:这是继承了Java语言的“一次编译,到处执行”的特点;

2、不受数据库供应商的限制:巧妙在于JDBC设有两种接口,一个是面向应用程序层,其作用是使得开发者通过SQL调用数据库和处理结果,而不须要考虑数据库的提供商;还有一个是驱动程序层,处理与详细驱动程序的交互,JDBC驱动程序能够利用JDBC API创建Java程序和数据源之间的桥梁。应用程序仅仅须要编写一次,便能够移到各种驱动程序上执行。Sun提供了一个驱动管理器,数据库供应商——如MySQL、Oracle,提供的驱动程序满足驱动管理器的要求就能够被识别,就能够正常工作。所以JDBC不受数据库供应商的限制。

        JDBC API能够作为连接Java应用程序与各种关系数据库的纽带,在带来方便的同一时候也有负面影响,下面是JDBC的优、缺点。长处例如以下:

  • 操作便捷:JDBC使得开发者不须要再使用复杂的驱动器调用命令和函数;
  • 可移植性强:JDBC支持不同的关系数据库,所以能够使同一个应用程序支持多个数据库的訪问,仅仅要载入对应的驱动程序就可以;
  • 通用性好:JDBC-ODBC桥接驱动器将JDBC函数换成ODBC;
  • 面向对象:能够将经常使用的JDBC数据库连接封装成一个类,在使用的时候直接调用就可以。

        缺点例如以下:

  • 訪问数据记录的速度受到一定程度的影响;
  • 更改数据源困难:JDBC可支持多种数据库,各种数据库之间的操作必有不同,这就给更改数据源带来了非常大的麻烦

二、JDBC连接数据库的流程及其原理

1、在开发环境中载入指定数据库的驱动程序。比如,接下来的实验中,使用的数据库是MySQL,所以须要去下载MySQL支持JDBC的驱动程序(最新的是:mysql-connector-java-5.1.18-bin.jar);而开发环境是MyEclipse,将下载得到的驱动程序载入进开发环境中(详细演示样例的时候会解说怎样载入)。

2、在Java程序中载入驱动程序。在Java程序中,能够通过 “Class.forName(“指定数据库的驱动程序”)” 方式来载入加入�到开发环境中的驱动程序,比如载入MySQL的数据驱动程序的代码为:  Class.forName(“com.mysql.jdbc.Driver”)

3、创建数据连接对象:通过DriverManager类创建数据库连接对象ConnectionDriverManager类作用于Java程序和JDBC驱动程序之间,用于检查所载入的驱动程序能否够建立连接,然后通过它的getConnection方法,依据数据库的URL、username和password,创建一个JDBC Connection 对象。如:Connection connection =  DriverManager.geiConnection(“连接数据库的URL”, “username”, “password”)。当中,URL=协议名+IP地址(域名)+port+数据库名称;username和password是指登录数据库时所使用的username和password。详细演示样例创建MySQL的数据库连接代码例如以下:

              Connection connectMySQL  =  DriverManager.geiConnection(“jdbc:mysql://localhost:3306/myuser”,”root” ,”root” );


4、创建Statement对象:Statement 类的主要是用于运行静态 SQL 语句并返回它所生成结果的对象。通过Connection 对象的 createStatement()方法能够创建一个Statement对象。比如:Statement statament = connection.createStatement(); 详细演示样例创建Statement对象代码例如以下:

             Statement statamentMySQL =connectMySQL.createStatement(); 


5、调用Statement对象的相关方法运行相相应的 SQL 语句:通过execuUpdate()方法用来数据的更新,包含插入和删除等操作,比如向staff表中插入一条数据的代码:

       statement.excuteUpdate( “INSERT INTO staff(name, age, sex,address, depart, worklen,wage)” + ” VALUES (‘Tom1’, 321, ‘M’, ‘china’,’Personnel’,’3′,’3000′ ) “) ; 

通过调用Statement对象的executeQuery()方法进行数据的查询,而查询结果会得到 ResulSet对象,ResulSet表示运行查询数据库后返回的数据的集合,ResulSet对象具有能够指向当前数据行的指针。通过该对象的next()方法,使得指针指向下一行,然后将数据以列号或者字段名取出。假设当next()方法返回null,则表示下一行中没有数据存在。使用演示样例代码例如以下:

       ResultSet resultSel = statement.executeQuery( “select * from staff” );


6、关闭数据库连接:使用完数据库或者不须要訪问数据库时,通过Connectionclose() 方法及时关闭数据连接。

三、JDBC应用演示样例实验

实验内容:使用phpMyAdmin在MySQL中创建数据库(myuser),并加入�实验所需的数据(新建staff表,加入�一些记录);编写Java程序,利用JDBC连接在MySQL中创建好的数据库(myuser),对staff表格进行插入、更新、删除和查询等操作。

实验环境及开发工具:Win7操作系统;jdk1.6.0_26;XAMPP1.7.7(MySQL 5.1,  phpMyAdmin);MyEclipse 8.5

实验环境的搭建:可參考我的博客

实验过程及步骤:

        1、下载MySQL支持JDBC的驱动程序:假设已经有了,可跳过这一步。前往MySQL官网(http://www.mysql.com/products/connector/ )下载驱动程序,,MySQL针对不同的平台提供了不同的连接器,我们须要的是DBC Driver for MySQL (Connector/J),例如以下图所看到的,点击 Download 跟着站点的引导进行下载。打开下载得到的压缩包(mysql-connector-java-5.1.18.zip),将当中的Java包(mysql-connector-java-5.1.18-bin.jar),拷贝到MySQL文件夹下(仅是为了方便才放到这里),以备载入驱动程序时使用。

JDBC连接MySQL数据库及演示样例

JDBC连接MySQL数据库及演示样例

JDBC连接MySQL数据库及演示样例

        2、创建数据库:使用phpMyAdmin,登录MySQL,创建数据库myuser,并在当中插入一个名为staff的表格。并加入�一些数据,操作步骤如图,登录进去MySQL数据库后:

               1)创建数据库,名称为myuser,编码为utf8_general_ci(支持中文);

创建数据库

              2)新建表格,名称为staff,表格有8个字段;

JDBC连接MySQL数据库及演示样例

                  3)8个字段的设置,包含名称、类型、值的长度、初始值、编码等等(点击查看大图);

JDBC连接MySQL数据库及演示样例

                4)加入�成功后,查看的staff表格情况:

JDBC连接MySQL数据库及演示样例

                5)往表格中插入一些实验所需数据,须要插入两条,一个是员工lucy的,还有lili的:

JDBC连接MySQL数据库及演示样例

JDBC连接MySQL数据库及演示样例

        3、在MyEclips中创建项目并在项目中加入�MySQL驱动程序:创建的项目类型能够是Java项目或者是Java Web项目都能够。这里创建的是Web项目,项目名称能够随便取,我命名为“JavaWebChp07”。创建成功后将步骤1里下载得到的MySQL驱动程序包(mysql-connector-java-5.1.18-bin.jar)加入�到project的Build path中,加入�过程如图所看到的:

JDBC连接MySQL数据库及演示样例

JDBC连接MySQL数据库及演示样例

JDBC连接MySQL数据库及演示样例

JDBC连接MySQL数据库及演示样例

        4、编写JDBC连接MySQL数据库的实例详细代码,JDBC_Test.java:

JDBC连接MySQL数据库及演示样例

详细代码:

<pre name="code" class="java">package chp07;

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

public class JDBC_Test {
	// 创建静态全局变量
	static Connection conn;

	static Statement st;

	public static void main(String[] args) {
		insert();	//插入加入�记录
		update();	//更新记录数据
		delete();	//删除记录
		query();	//查询记录并显示
	}
	
	/* 插入数据记录,并输出插入的数据记录数*/
	public static void insert() {
		
		conn = getConnection();	// 首先要获取连接,即连接到数据库

		try {
			String sql = "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)"
					+ " VALUES ('Tom1', 32, 'M', 'china','Personnel','3','3000')";	// 插入数据的sql语句
			
			st = (Statement) conn.createStatement();	// 创建用于运行静态sql语句的Statement对象
			
			int count = st.executeUpdate(sql);	// 运行插入操作的sql语句,并返回插入数据的个数
			
			System.out.println("向staff表中插入 " + count + " 条数据");	//输出插入操作的处理结果
			
			conn.close();	//关闭数据库连接
			
		} catch (SQLException e) {
			System.out.println("插入数据失败" + e.getMessage());
		}
	}
	
	/* 更新符合要求的记录,并返回更新的记录数目*/
	public static void update() {
		conn = getConnection();	//相同先要获取连接,即连接到数据库
		try {
			String sql = "update staff set wage='2200' where name = 'lucy'";// 更新数据的sql语句
			
			st = (Statement) conn.createStatement();	//创建用于运行静态sql语句的Statement对象,st属局部变量
			
			int count = st.executeUpdate(sql);// 运行更新操作的sql语句,返回更新数据的个数
			
			System.out.println("staff表中更新 " + count + " 条数据");		//输出更新操作的处理结果
			
			conn.close();	//关闭数据库连接
			
		} catch (SQLException e) {
			System.out.println("更新数据失败");
		}
	}

	/* 查询数据库,输出符合要求的记录的情况*/
	public static void query() {
		
		conn = getConnection();	//相同先要获取连接,即连接到数据库
		try {
			String sql = "select * from staff";		// 查询数据的sql语句
			st = (Statement) conn.createStatement();	//创建用于运行静态sql语句的Statement对象,st属局部变量
			
			ResultSet rs = st.executeQuery(sql);	//运行sql查询语句,返回查询数据的结果集
			System.out.println("最后的查询结果为:");
			while (rs.next()) {	// 推断是否还有下一个数据
				
				// 依据字段名获取对应的值
				String name = rs.getString("name");
				int age = rs.getInt("age");
				String sex = rs.getString("sex");
				String address = rs.getString("address");
				String depart = rs.getString("depart");
				String worklen = rs.getString("worklen");
				String wage = rs.getString("wage");
				
				//输出查到的记录的各个字段的值
				System.out.println(name + " " + age + " " + sex + " " + address
						+ " " + depart + " " + worklen + " " + wage);
			
			}
			conn.close();	//关闭数据库连接
			
		} catch (SQLException e) {
			System.out.println("查询数据失败");
		}
	}

	/* 删除符合要求的记录,输出情况*/
	public static void delete() {

		conn = getConnection();	//相同先要获取连接,即连接到数据库
		try {
			String sql = "delete from staff  where name = 'lili'";// 删除数据的sql语句
			st = (Statement) conn.createStatement();	//创建用于运行静态sql语句的Statement对象,st属局部变量
			
			int count = st.executeUpdate(sql);// 运行sql删除语句,返回删除数据的数量
			
			System.out.println("staff表中删除 " + count + " 条数据\n");	//输出删除操作的处理结果
			
			conn.close();	//关闭数据库连接
			
		} catch (SQLException e) {
			System.out.println("删除数据失败");
		}
		
	}
	
	/* 获取数据库连接的函数*/
	public static Connection getConnection() {
		Connection con = null;	//创建用于连接数据库的Connection对象
		try {
			Class.forName("com.mysql.jdbc.Driver");// 载入Mysql数据驱动
			
			con = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/myuser", "root", "root");// 创建数据连接
			
		} catch (Exception e) {
			System.out.println("数据库连接失败" + e.getMessage());
		}
		return con;	//返回所建立的数据库连接
	}
}


项目部署到server,然后执行结果:

JDBC连接MySQL数据库及演示样例

http://www.5678520.com/kaiwangdian/130.html 

http://www.5678520.com/kaiwangdian/129.html 

http://www.5678520.com/kaiwangdian/128.html 

http://www.5678520.com/kaiwangdian/127.html 

http://www.5678520.com/kaiwangdian/126.html 

http://www.lianzhiwei.com/News/389/20122116.html 

http://www.lianzhiwei.com/News/389/20122115.html 

http://www.lianzhiwei.com/News/389/20122114.html 

http://www.lianzhiwei.com/News/389/20122113.html 

http://www.lianzhiwei.com/News/389/20122112.html 





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

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

(0)
上一篇 2021年12月8日 下午3:00
下一篇 2021年12月8日 下午4:00


相关推荐

  • Java单例模式中双重检查锁的问题

    Java单例模式中双重检查锁的问题单例创建模式是一个通用的编程习语。和多线程一起使用时,必需使用某种类型的同步。在努力创建更有效的代码时,Java程序员们创建了双重检查锁定习语,将其和单例创建模式一起使用,从而限制同步代码量。然而,由于一些不太常见的Java内存模型细节的原因,并不能保证这个双重检查锁定习语有效。它偶尔会失败,而不是总失败。此外,它失败的原因并不明显,还包含Java内存模型的一些隐秘细节。这些事实将导致代

    2022年7月25日
    18
  • 中国IT名人榜

    中国IT名人榜nbsp 中国 IT 名人排行榜 简洁版 第十位 马云 阿里巴巴网站创始人 主席 首席执行官 CEO 第九位 王雷雷 TOM 互联网事业集团总裁第八位 汪延 互联网时代的标志性人物 新浪公司前任 CEO 现任副董事长第七位 张朝阳 互联网时代的标志性人物 搜狐公司董事局主席兼 CEO 第六位 陈天桥 盛大网络董事长兼 CEO 第五位 丁磊 互联网时代的标志性人物 网易公司创始人

    2026年3月26日
    4
  • Redis客户端安装与安装包

    Redis客户端安装与安装包为了更方便使用Redis,我们经常都会安装一些图像化管理工具,Redis的客户端工具其实也挺多的,但总体来说,使用效果比较好的,我觉得这个比较好。以下简单简述安装课程。首先双击打开安装文件“Redis客户端.exe”:点击“Next”进行下一步:点击”IAgree“,进行下一步: 可根据自己的要求修改安装路径,然后点击“Install”,进行下一步: 安装中,大概几秒中就可以安装完毕: 点击“Next”,进行下一步: …

    2022年5月13日
    42
  • oracle11g安装步骤详细图文教程

    oracle11g安装步骤详细图文教程一、下载oracle11g下载地址:https://www.oracle.com/database/technologies/oracle-database-software-downloads.h

    2022年7月3日
    28
  • gain command of_partitioning

    gain command of_partitioning今天在Centos上进行硬盘分区的时候,分区完成时候需要命令partprobe指令来通知一下内核我刚才进行了系统分区,但是执行的时候发现Centos最小化安装之后没有这个命令,第一时间想到的就是肯定是包含这个指令的rpm包没有装,然后就跑到Centos7上面看一下有没有这条指令,发现有这条指令,然后就查看一下这条指令是来自于哪个安装包[root@zsf~]#whichp…

    2022年10月8日
    6
  • pfx文件解析私钥和公钥

    pfx文件解析私钥和公钥最近和某行对接,发现私钥和公钥以pfx文件形式传给我们,需要我们自己进行读取,当时头就有点儿大(菜鸟,第一次接触,哎~~~)先说一下pfx证书与cer证书的区别PFX证书:由PublicKeyCryptographyStandards#12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。CER证书:证书中没有私钥,DER编码二进制

    2022年5月1日
    52

发表回复

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

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