MySQL数据库学习笔记(八)----JDBC入门及简单增删改查数据库的操作

【声明】

欢迎转载,但请保留文章原始出处→_→

生命壹号:http://www.cnblogs.com/smyhvae/

文章来源:http://www.cnblogs.com/smyhvae/p/4050825.html

联系方式:[email protected]

【正文】                                                                                                                                             

一、JDBC的引入                                                                                                                     

1、JDBC的概念

JDBC:Java Database Connection,表示数据库连接(任何数据库都支持JDBC的连接),是一个独立于特定数据库管理系统、通用的sql数据库存取和操作的公共接口。它是java中专门提供的一组用于操作数据库的标准,所有的数据库生产商如果要是想为java提供支持,则必须支持此标准。既然是标准的话,所以说JDBC实际上是一套访问数据库的接口

2、常用操作类/接口

Connection接口、Statement接口、PreapredStatement接口、ResultSet接口、CallableStatement接口、DriverManager类。

3、JDBC应用步骤

  • 1.注册加载一个驱动
  • 2.创建数据库连接(Connection)
  • 3.创建statement,发送sql语句
  • 4.执行sql语句
  • 5.处理sql结果
  • 6.关闭statement和connection

                                                                                

二、驱动程序下载:                                                                                    

根据上一段的定义,我们明白了,java定义JDBC接口,数据库来实现这个接口。不同的厂商对JDBC有不同的实现,所以厂商要提供自己数据库的驱动,让应用程序来访问。而应用程序则只通过自己的一套JDBC来访问就行了,只不过可能会依赖于不同的驱动程序,然后驱动程序来实现接口,从而让驱动来调用数据库。所以我们终于明白了这句话:驱动程序由数据库提供商提供下载

在Java中,驱动程序是以jar包的形式提供的,MySQL驱动程序的下载地址:http://dev.mysql.com/downloads/

上图中,选择“Connector/J”的版本进行下载,弹出下一个界面,让我们选择平台来下载:如果选择windows平台,界面如下:

如果选择跨平台,界面会变成下面的这个样子:

上图中,第一个版本是Linux平台的压缩包,第二个是Windows平台中的压缩包,那我们选择上图中的红框部分进行下载:

上图中,不用注册,直接下载。下载完成后,解压:

上图中,红框部分的mysql-connector-java-5.1.33-bin.jar就是我们所需要的包。

三、JDBC实现简单增删改操作:

  • 1、JDBC操作前的准备工作
  • 2、实现插入操作
  • 3、实现更新操作
  • 4、实现删除操作
  • 5、代码优化(写成工具类):将字段换成变量

1、JDBC操作前的准备工作:

首先创建数据库表:person。字段:id,name,age,description。建表的命令如下:

CREATE TABLE person(
id int primary key auto_increment,
name varchar(20),
age int(2),
description varchar(100)
);

创建的空表如下:

紧接着导入数据库驱动包:

打开eclipse,新建Java工程JDBC01,然后在根目录下新建一个文件夹libs:

然后复制之前下载的驱动包mysql-connector-java-5.1.33-bin.jar,粘贴到libs目录下,然后到了最关键的一步:将该Java包添加到工程的Build path中,操作如下图:

如果生效之后,就会多出一个文件出来:(下图中的箭头处)

2、实现插入操作:

步骤如下:

  • 1、加载数据库驱动程序:Class.forName(驱动程序类);
  • 2、通过用户名密码和连接地址url获取数据库连接对象:Connection connnction = DriverManager.getConnection(连接地址url,用户名,密码)。每个数据库都有指定的url,同一格式如下:jdbc:mysql://ip地址:端口号/数据库名字。
  • 3、构造插入的SQL语句。注:在Java程序当中,SQL语句是以字符串的形式使用,程序不认识此SQL语句,传到数据库后让数据库来识别。
  • 4、Statement实例:Statement stmt = connction.createStatement()。Statement是用来发送SQL语句的载体,因为Java代码无法解析,要交给数据库来解析。
  • 5、执行插入SQL语句:stmt.executeUpdate(sql)。这里的执行是发送SQL语句。返回值为int类型,表示有多少条记录被更新了。
  • 6、关闭连接:stmt.close()、 connnction.close()。关闭是为了释放资源。

注:这个步骤是通俗的用法,可以当做模板来用。我们来举个例子。

在工程文件中新建一个java类,作为主程序:

JdbcTest.java完整版代码如下:(注释很详细)

 1 package com.vae.jdbc;
 2
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.SQLException;
 6 import java.sql.Statement;
 7
 8 public class JdbcTest {
 9
10     /**
11      * @param args
12      */
13
14     //数据库连接地址
15     private final static String URL = "jdbc:mysql://localhost:3306/mydb_2";
16     //用户名
17     public final static String USERNAME = "root";
18     //密码
19     public final static String PASSWORD = "smyh";
20     //加载的驱动程序类(这个类就在我们导入的jar包中)
21     public final static String DRIVER = "com.mysql.jdbc.Driver";
22
23     public static void main(String[] args) {
24         // TODO Auto-generated method stub
25         insert();
26     }
27
28
29     //方法:插入数据
30     public static void insert(){
31         try {
32             //1、加载数据库驱动程序
33             Class.forName(DRIVER);
34
35             //2、获取数据库连接
36             Connection connection  = DriverManager.getConnection(URL, USERNAME, PASSWORD);
37
38             //3、构造SQL语句(插入具体的数据)
39             String sql = "insert into person(name,age,description)values(‘生命壹号‘,22,‘学到哪里,我的博客就写到哪里‘)";
40
41             //4、构造一个Statement实例(用来发送SQL语句的载体)
42             Statement state = connection.createStatement();
43
44             //5、执行SQL语句(其实是想数据库中发送sql语句)
45             state.executeUpdate(sql);
46
47             //6、关闭连接(释放资源)
48             state.close();
49             connection.close();
50
51             System.out.println("insert success");
52
53
54         } catch (ClassNotFoundException e) {
55             e.printStackTrace();
56         } catch (SQLException e) {
57             e.printStackTrace();
58         }
59
60     }
61
62 }

注意程序在导包时,导入的是下面的这些包:

代码解释:

15行的url代表连接接数据库的地址。命名格式统一如下:url = "jdbc:mysql://ip地址:端口号/数据库名字"。如果是本机的话,IP地址可以写成localhost。

17行、19行:指的是数据库的用户名和密码。如果输入错误,会报错如下:

21行:我们所加载的驱动程序类的名字是:com.mysql.jdbc.Driver,其实它就指的就是jar包中的com.mysql/jdbc/Driver.class文件。

程序运行成功后,后台会输出:

我们再去数据库看一下,发现数据真的填充进去了:

终于实现了Java代码与数据库之间的联系,任务完成。

3、实现更新操作:

和上面的插入操作相比,只是sql语句不一样而已(因为插入数据和更新数据其实都是更新嘛)

步骤如下:

更新操作的方法如下:(代码解释请参照上面的代码就懂了)

 1   //方法:更新数据
 2     public static void update(){
 3         try {
 4             Class.forName(DRIVER);
 5             Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
 6             String sql = "update person set age=24 where id=1";
 7             Statement state = connection.createStatement();
 8             state.executeUpdate(sql);
 9             state.close();
10             connection.close();
11             System.out.println("update success");
12         } catch (ClassNotFoundException e) {
13             e.printStackTrace();
14         } catch (SQLException e) {
15             e.printStackTrace();
16         }
17     }

核心代码是第6行,我们将之前的22岁改为24岁。程序运行后,数据库里也会对应的进行更新。

4、实现删除操作

同样的道理,和上面的插入操作相比,只是sql语句不一样而已(因为插入数据、更新数据、删除数据其实都是更新嘛)

删除操作的方法如下:

 1     //方法:删除操作
 2     public static void delete(){
 3         try {
 4             Class.forName(DRIVER);
 5             Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
 6             String sql = "delete from person where id=1";
 7             Statement state = connection.createStatement();
 8             state.executeUpdate(sql);
 9             state.close();
10             connection.close();
11             System.out.println("delete success");
12         } catch (ClassNotFoundException e) {
13             e.printStackTrace();
14         } catch (SQLException e) {
15             e.printStackTrace();
16         }
17     }

核心代码是第06行和第08行。

5、代码优化(写成工具类):将字段换成变量

我们上面的增删该的操作都是直接在sql里面放入具体的参数,但是有可能这种参数是外面传进来的,所以一种更方便的写法是把参数换成变量,我们以插入操作为例:

 1     //方法:插入数据(代码优化)
 2     public static void insert2(){
 3         String name = "生命贰号";
 4         int age  = 22;
 5         String description = "哈哈,我是优化之后的代码哦";
 6         try {
 7             Class.forName(DRIVER);
 8             Connection connection  = DriverManager.getConnection(URL, USERNAME, PASSWORD);
 9             //拼接SQL语句
10             String sql = "insert into person(name,age,description)values(‘"+name+"‘,"+age+",‘"+description+"‘)";  //注意拼接的格式
11             Statement state = connection.createStatement();
12             state.executeUpdate(sql);
13             state.close();
14             connection.close();
15             System.out.println("success.");
16
17
18         } catch (ClassNotFoundException e) {
19             e.printStackTrace();
20         } catch (SQLException e) {
21             e.printStackTrace();
22         }
23
24     }

核心代码是第10行,这里的sql语句是以变量的形式出现的,符合工具类的特性,注意它拼接的格式哦~~~来把它拆开再仔细瞧一瞧:

String sql = "insert into person(name,age,description)values(‘ "+name+" ‘,      "+age+",    ‘  "+description+"  ‘)";

运行之后,效果如下:

其实这种拼接的方式很不好:既麻烦又不安全。详细解释将在下篇文章中学习到,加油!!!

哦,对了,最后再贴一下上方所有代码的完整版:

  1 package com.vae.jdbc;
  2
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.SQLException;
  6 import java.sql.Statement;
  7
  8 public class JdbcTest {
  9
 10     /**
 11      * @param args
 12      */
 13
 14     //数据库连接地址
 15     private final static String URL = "jdbc:mysql://localhost:3306/mydb_2";
 16     //用户名
 17     public final static String USERNAME = "root";
 18     //密码
 19     public final static String PASSWORD = "smyh";
 20     //加载的驱动程序类(这个类就在我们导入的jar包中)
 21     public final static String DRIVER = "com.mysql.jdbc.Driver";
 22
 23     public static void main(String[] args) {
 24         // TODO Auto-generated method stub
 25         insert();
 26         //update();
 27         //delete();
 28         //insert2();
 29     }
 30
 31
 32     //方法:插入数据
 33     public static void insert(){
 34         try {
 35             //1、加载数据库驱动程序
 36             Class.forName(DRIVER);
 37
 38             //2、获取数据库连接
 39             Connection connection  = DriverManager.getConnection(URL, USERNAME, PASSWORD);
 40
 41             //3、构造SQL语句(插入具体的数据)
 42             String sql = "insert into person(name,age,description)values(‘生命壹号‘,22,‘学到哪里,我的博客就写到哪里‘)";
 43
 44             //4、构造一个Statement实例(用来发送SQL语句的载体)
 45             Statement state = connection.createStatement();
 46
 47             //5、执行SQL语句(其实是想数据库中发送sql语句)
 48             state.executeUpdate(sql);
 49
 50             //6、关闭连接(释放资源)
 51             state.close();
 52             connection.close();
 53
 54             System.out.println("insert success");
 55
 56
 57         } catch (ClassNotFoundException e) {
 58             e.printStackTrace();
 59         } catch (SQLException e) {
 60             e.printStackTrace();
 61         }
 62
 63     }
 64
 65
 66     //方法:插入数据(代码优化)
 67     public static void insert2(){
 68         String name = "生命贰号";
 69         int age  = 22;
 70         String description = "哈哈,我是优化之后的代码哦";
 71         try {
 72             Class.forName(DRIVER);
 73             Connection connection  = DriverManager.getConnection(URL, USERNAME, PASSWORD);
 74             //拼接SQL语句
 75             String sql = "insert into person(name,age,description)values(‘"+name+"‘,"+age+",‘"+description+"‘)";  //注意拼接的格式
 76             Statement state = connection.createStatement();
 77             state.executeUpdate(sql);
 78             state.close();
 79             connection.close();
 80             System.out.println("success.");
 81
 82
 83         } catch (ClassNotFoundException e) {
 84             e.printStackTrace();
 85         } catch (SQLException e) {
 86             e.printStackTrace();
 87         }
 88
 89     }
 90
 91
 92   //方法:更新数据
 93     public static void update(){
 94         try {
 95             Class.forName(DRIVER);
 96             Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
 97             String sql = "update person set age=24 where id=1";
 98             Statement state = connection.createStatement();
 99             state.executeUpdate(sql);
100             state.close();
101             connection.close();
102             System.out.println("update success");
103         } catch (ClassNotFoundException e) {
104             e.printStackTrace();
105         } catch (SQLException e) {
106             e.printStackTrace();
107         }
108     }
109
110
111     //方法:删除操作
112     public static void delete(){
113         try {
114             Class.forName(DRIVER);
115             Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
116             String sql = "delete from person where id=1";
117             Statement state = connection.createStatement();
118             state.executeUpdate(sql);
119             state.close();
120             connection.close();
121             System.out.println("delete success");
122         } catch (ClassNotFoundException e) {
123             e.printStackTrace();
124         } catch (SQLException e) {
125             e.printStackTrace();
126         }
127     }
128
129 }
时间: 2024-10-03 13:15:22

MySQL数据库学习笔记(八)----JDBC入门及简单增删改查数据库的操作的相关文章

hibernate学习笔记之三(单条记录的增删改查)

(hibernate学习笔记系列来自于 "疯狂Java" Hibernate视频学习) 保存用户 session.save(person); session.persist(person); 查询用户 load(Class theClass,Serializable id) get(Class theClass,Serializable id) 修改用户 session.update(person) session.merger(person); 保存或修改用户 session.sav

C#学习笔记(6)——大项目增删改查

说明(2017-5-28 11:35:39): 1. 需要注意的地方很多 2. 首先是连接字符串str要直接写在类里面,不然每个按钮里面都要写一遍. 3. 查询用到sqlDataReader等三个方法,其他增删改只用到sqlCommond和sqlConnection. 4. sqlConnection记得要open! 5. 其他的记不起来了,总之要经常练习! 运行结果: 代码: 1 using System; 2 using System.Collections.Generic; 3 using

Android学习--------实现增删改查数据库操作以及实现类似微信好友对话管理操作

最近的一个实验用到东西挺多,特地总结一下. 要求功能: 1.第一个页面添加歌曲名和歌手,跳到第二个页面列表显示所有记录,使用sqlite数据库 2.对于第二个页面显示的信息可以进行删除和修改操作,并自动刷新 最后我做的效果: 长按列表项弹出单个管理的菜单,像微信好友对话管理一样. 删除时可以直接删除这一条并在列表中直接显示,更新时弹出对话框更新内容提交后在列表中重新显示. 做此例遇到的困难: 1.菜单获取上下文 2.获取对话框中的内容 3.对话框按钮添加监听事件-----注意包不要导错:impo

Yii2.0高级框架数据库增删改查的一些操作

yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 ----------------------------------------------------------------------------------------------------- User::find()->all();    //返回所有用户数据:User::findOne($id);   //返回 主键 id=1  的一条数

Yii2.0高级框架数据库增删改查的一些操作(转)

yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 ----------------------------------------------------------------------------------------------------- User::find()->all();    //返回所有用户数据:User::findOne($id);   //返回 主键 id=1  的一条数

GZFramwork数据库层《四》单据主从表增删改查

同GZFramwork数据库层<三>普通主从表增删改查   不同之处在于:实例 修改为:   直接上效果:         本系列项目源码下载地址:https://github.com/GarsonZhang/GZFramworkDBDemo/ 生成器源码下载地址:https://github.com/GarsonZhang/GZCodeGenerate/   系列文章 1. GZFramwork数据库层<前言>Demo简介 2. GZFramwork数据库层<前言>D

GZFramwork数据库层《三》普通主从表增删改查

运行结果: 使用代码生成器(GZCodeGenerate)生成tb_Cusomer和tb_CusomerDetail的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGenerate/ 生成方式见第一节: GZFramwork数据库层<一>普通表增删改查   生成明细表ORM略有不同: 项目附加结果:   新增一个自定义控件:ucTableMD 界面:   后台代码: using System; using System.Colle

django之创建第8-1个项目-数据库之增删改查/数据库数据显示在html页面

1.为test.DB数据库预先创建下面数据 1    张三    16    2015-01-02    12    李四    17    2015-01-04    13    王五    14    2015-04-24    0 2.配置C:\djangoweb\helloworld\blog\urls.py文件 # -*- coding: UTF-8 -*- from django.conf.urls import patterns, include, url urlpatterns

Asp.net Core 2.1使用 EF Core 简单增删改查操作数据库

Asp.net Core 2.1使用 EF Core 简单增删改查操作数据库 大概步骤如下5步: 1.创建项目(Asp.net Core 2.1项目) 2.项目使用EF Core 3.建立实体 4.生成迁移文件(生成数据库) 5.使用VS工具生成视图.控制器代码 示例代码下载  https://github.com/ZhMartincheng/NetCoreDemo.git 1.创建项目(Asp.net Core 2.1项目) 选择.net core 版本2.1 基础项目创建成功 2.项目使用E