MySQL之入门JDBC(版本1.0)#概念总结、使用步骤、代码实现(一看必会)

编程入门 行业动态 更新时间:2024-10-12 05:46:37

MySQL之入门JDBC(版本1.0)#概念总结、使用步骤、代码实现(一看<a href=https://www.elefans.com/category/jswz/34/1760210.html style=必会)"/>

MySQL之入门JDBC(版本1.0)#概念总结、使用步骤、代码实现(一看必会)

JDBC:Java Database Connectivity,代表一组独立于任何DBMS的API,主要声明在java.sql与javax.sql包中,是sun提供的一种接口规范,通过实现类的集合来构成数据库驱动jar。在Java中调用JDBC实际上就是面向接口编程,面向驱动编程我们一般不采用,因为移植性、扩展性比较差,如下图的Java Application 直接去调用 JDBCMysqlimpl,可行但不建议。

JDBC使用步骤

①注册驱动(3部曲)

  (1)将DBMS数据库管理软件的驱动(Jar)拷贝到项目的libs文件中

  例如:mysql-connector-java-5.1.36-bin.jar - -‘’5.1.36‘’为版本号

  (2)把驱动Jar添加到项目的build path中(即把jar中的class添加到项目的编译路径下)

  jar右键–>Build Path -->Add to Build Path

  (3)把驱动类加载到内存中,交给DriverManager管理

  Class.forName(“类名称”)

②获取Connection连接对象
  URL:jdbc:mysql://主机ip地址:端口号/数据库名?参数名=参数名
   Connection con = DriverManager.getConnection(url, username,password");

☛说明:
客户端连接服务器端,主要注意四点:

  (1)协议:jdbc:mysql

  (2)IP地址(本机就是localhost)

  (3)端口号(默认的是3306)

  (4)查询/使用的数据库 例如:coding0110lindb(这是我在本机客户端新建的数据库)

服务器端对客户端用户的校验有两点:

  (1)IP地址和用户名

  (2)密码

③执行sql并处理结果(CURD)
  (1)编写sql语句
  (2)创建Statement 或PerparedStatement对象
  (3)执行sql
  (4)处理结果
  增删改:返回整数值
  查询:返回ResultSet结果集,使用nex()和get()组合遍历

④释放连接

测试数据库、表
mysql> use coding0110lindb;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_coding0110lindb |
+---------------------------+
| employee                  |
| stu_table                 |
+---------------------------+
2 rows in set (0.00 sec)mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)mysql> select * from stu_table;
+-----+--------+
| sid | sname  |
+-----+--------+
|   1 | 林大侠      |
|   2 | 刘猪猪       |
|   3 | 李大象       |
|   4 | 周跑跑       |
+-----+--------+
4 rows in set (0.00 sec)
代码实现:

测试是否成功连接MySQL服务

package com.daxia.test;import java.sql.Connection;
import java.sql.DriverManager;public class TestConnection {public static void main(String[] args) throws Exception {// 面向驱动编程不建议采用// Connection con = new JDBC4Connection(hostToConnectTo,// portToConnectTo, info, databaseToConnectTo, url);// (1)利用反射加载类,注册驱动(“驱动类的全名称”)Class.forName("com.mysql.jdbc.Driver");// (2)获取Connection连接对象// 根据TCP/IP协议编程,需要服务器的IP地址和端口号//url格式:jdbc协议:子协议:主机名:端口号/指定连接的数据库名String url = "jdbc:mysql://localhost:3306/coding0110lindb";Connection con = DriverManager.getConnection(url, "root", "root");System.out.println(con);// 测试通过 com.mysql.jdbc.JDBC4Connection@17f052a3}}

增删改查基本操作

(1)添加

v

package com.daxia.test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class InsertTest {public static void main(String[] args) throws Exception {// (1)注册驱动Class.forName("com.mysql.jdbc.Driver");// (2)获取Connection连接Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/coding0110lindb", "root", "root");// (3)执行sql并处理结果String sql = "insert into stu_table values(5,'张飞飞')";//statement对象用于执行不带参数的简单的SQL语句Statement st = con.createStatement();int len = st.executeUpdate(sql);System.out.println(len);System.out.println(len > 0 ? "添加成功" : "添加失败");st.close();con.close();/*** Eclispe控制台打印结果:** 1 * 添加成功*/}
}
mysql> select * from stu_table;
+-----+--------+
| sid | sname  |
+-----+--------+
|   1 | 林大侠      |
|   2 | 刘猪猪       |
|   3 | 李大象       |
|   4 | 周跑跑       |
+-----+--------+
4 rows in set (0.00 sec)
-------------------------------------------------------第一个select是添加前的结果
mysql> select * from stu_table;
+-----+--------+
| sid | sname  |
+-----+--------+
|   1 | 林大侠      |
|   2 | 刘猪猪       |
|   3 | 李大象       |
|   4 | 周跑跑       |
|   5 | 张飞飞     |
+-----+--------+
5 rows in set (0.00 sec)-------------------------------------------------------第二个select是添加后的结果(添加成功)

(2)删除

package com.daxia.test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class InsertTest {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/coding0110lindb", "root", "root");String sql = "delete from stu_table where sid = 5";Statement st = con.createStatement();int len = st.executeUpdate(sql);System.out.println(len);System.out.println(len > 0 ? "删除成功" : "删除失败");st.close();con.close();/*** Eclispe控制台打印结果:*  1*	删除成功*/}
}
mysql> select * from stu_table;
+-----+--------+
| sid | sname  |
+-----+--------+
|   1 | 林大侠      |
|   2 | 刘猪猪       |
|   3 | 李大象       |
|   4 | 周跑跑       |
+-----+--------+
4 rows in set (0.00 sec)

(3)修改

package com.daxia.test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class InsertTest {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/coding0110lindb", "root", "root");String sql = "update stu_table set sname = '大侠' where sid = 1";Statement st = con.createStatement();int len = st.executeUpdate(sql);System.out.println(len);System.out.println(len > 0 ? "修改成功" : "修改失败");st.close();con.close();/*** Eclispe控制台打印结果:*  1*	修改成功*/}
}
mysql> select * from stu_table;
+-----+--------+
| sid | sname  |
+-----+--------+
|   1 | 林大侠      |
|   2 | 刘猪猪       |
|   3 | 李大象       |
|   4 | 周跑跑       |
+-----+--------+
4 rows in set (0.00 sec)
-------------------------------------------------------第一个select是修改前的结果
mysql> select * from stu_table;
+-----+--------+
| sid | sname  |
+-----+--------+
|   1 | 大侠       |
|   2 | 刘猪猪       |
|   3 | 李大象       |
|   4 | 周跑跑       |
+-----+--------+
4 rows in set (0.00 sec)-------------------------------------------------------第二个select是修改后的结果

(4)查询

package com.daxia.test;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class SelectTest {public static void main(String[] args) throws Exception {Class.forName("com.mysql.jdbc.Driver");Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/coding0110lindb", "root", "root");String sql = "select * from stu_table";Statement st = con.createStatement();ResultSet rs = st.executeQuery(sql);// 用结果集对象去接收while (rs.next()) {int id = rs.getInt("sid");String name = rs.getString("sname");System.out.println(id + "->" + name);}st.close();con.close();/*** Eclispe控制台打印结果(与数据库表的数据一致):*  1->大侠*  2->刘猪猪*  3->李大象*  4->周跑跑*	*/}}

总结:

  以上代码实现了在Java中操作MySQL数据库删除改查的基本功能,对于insert into、delete from、update语句, statement对象都会调用executeUpdate()方法,返回一个整数值,而对于select语句, statement对象调用的是executeQuery()方法,返回的是一个结果集,这个区别我们需要注意!再看看代码,是不是感觉代码太冗余,扩展性不好,我们还可以进行什么样的优化?下期,我们见♥

#轻松一刻


  ☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!

☞本人博客:/  欢迎转载,一起技术交流吧!

更多推荐

MySQL之入门JDBC(版本1.0)#概念总结、使用步骤、代码实现(一看必会)

本文发布于:2024-03-05 11:15:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1712140.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:必会   入门   步骤   概念   版本

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!