必会)"/>
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)#概念总结、使用步骤、代码实现(一看必会)
发布评论