mysql8中怎么增删一列_MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作...

【声明】

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

【正文】

一、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.构造SQL语句

4.创建statement,发送sql语句

5.执行sql语句

6.处理sql结果

7.关闭statement和connection

二、驱动程序下载:

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

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

a6efcc02b1297f294a60fb00b333635c.png

61f6166bf5895de8930063e5bfa15b8f.png

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

d011891a316cf62ca9f295a46714abe0.png

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

4a2970ae1f8638d1d7587785b74a5b60.png

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

cc8a8ffbb06a4ffd7e1487233d1fc330.png

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

ce0df8117e01eb7fbfafdaee36210ff7.png

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

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

1、JDBC操作前的准备工作

2、实现插入操作

3、实现更新操作

4、实现删除操作

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

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

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

CREATE TABLEperson(

idint primary keyauto_increment,

namevarchar(20),

ageint(2),

descriptionvarchar(100)

);

创建的空表如下:

f26059121c3bd63cfc882c89c827a081.png

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

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

284cfe845b30b151b02e0e7bee7e4237.png

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

a494b6a560f7f69ba50dc4d7ef5f2e0e.png

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

6cb7fd4071fa5239d274063276003039.png

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类,作为主程序:

aca8ac2e53d4085409a07c5cb41549d3.png

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

1 packagecom.vae.jdbc;2

3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.SQLException;6 importjava.sql.Statement;7

8 public classJdbcTest {9

10 /**

11 *@paramargs12 */

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 voidmain(String[] args) {24 //TODO Auto-generated method stub

25 insert();26 }27

28

29 //方法:插入数据

30 public static voidinsert(){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 }

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

a34ec22c26c904e6549d8ef00a3670b5.png

代码解释:

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

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

f849b2d581c400a9b49d50548e4271ee.png

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

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

0e1c948a179dd59a4360ec50137ee37d.png

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

b159f0ed24537377950d94a3d36ec8f6.png

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

3、实现更新操作:

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

步骤如下:

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

1 //方法:更新数据

2 public static voidupdate(){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 voiddelete(){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 voidinsert2(){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+"  ')";

运行之后,效果如下:

b19ed415a8a4047567e575a58b0ba587.png

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

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

1 packagecom.vae.jdbc;2

3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.SQLException;6 importjava.sql.Statement;7

8 public classJdbcTest {9

10 /**

11 *@paramargs12 */

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 voidmain(String[] args) {24 //TODO Auto-generated method stub

25 insert();26 //update();27 //delete();28 //insert2();

29 }30

31

32 //方法:插入数据

33 public static voidinsert(){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 voidinsert2(){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 voidupdate(){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 voiddelete(){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 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值