课前导读:
本文章有关JDBC连接数据库的操作,其中涉及了编译器idea的使用,其中连接的数据库为MySQL数据库,通过博主自己的学习和总结写出了下面的文章。
目录
一、JDBC简介
我们没有官方的解释,jdbc就是很多个Java圈子里的大佬通过约定API定义操作数据库的标准,然后个个不同数据库厂商提供相应的驱动jar包来加载API文档来进行编译器和数据库的连接。驱动jar包相当于API的具体实现,只要掌握了JDBC这套API操作,无论操作哪个数据库,代码都是不变的,基本相同。
JDBC屏蔽了不同数据库原生API之间的差异,使用同一套API接口来规范所有数据库的编程操作。
大概就是这个图的意思
但是官网下载驱动jar包很麻烦,于是可以取中央仓库下载jar包
中央仓库:Maven Repository: Search/Browse/Explore (mvnrepository.com)
搜索mysql
点击Java连接选项
下载自己数据库对应版本的jar包
下载jar包
打开文件夹
二、JDBC连接操作
1、创建项目,创建lib包
2、将jar包复制进lib包中
3、右键jar包选中add as library点击,然后ok。
4、创建Java项目进行jdbc代码编写(具体实现看代码中的注释部分)
(1)通过jar包中的datasouce方法进行数据源的获取,固定格式记住,后面时mysql还是其他的根据所连接数据库类型进行选择。
(2)通过datasource的向下转型调用子类方法进行路径、用户名和密码的配置。
url:"jdbc:mysql://127.0.0.1:3306/java_106_1?characterEncoding=utf8&useSSL=false"
固定连接格式:3306后面写的是你所连接的mysql数据库中的具体数据库名,characterEncoding意思是使用utf8字符集,useSSL=false是指关闭网络协议,否则会报错。
(3)通过getconnection方法获取数据库连接,此处一定要选java.sql接口,不是那个jdbc接口。
(4)定义字符串动态写入sql,?是占位符
(5)创建statement对象接收上面的数据库连接。
(6)通过Java的输入进行动态sql编写,通过statement的setint,setString方法把数据写入到sql中,这里的1,2就是指第几个问号,从1开始数。
(7)执行sql语句
用statement的executeupdate方法来执行sql,用ret接收收影响行数,打印受影响行数。
(8)释放资源:先执行的后释放,先释放近的。
(9)如果执行sql语句是查询语句时,就需要遍历结果集,如果时增删改语句就和上面一样,只需要改动sql语句。
三、源码提供以及注释信息
增加语句连接:
package src; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; public class JDBCInsertDemo { public static void main(String[] args) throws SQLException { //JDBC连接数据库增加数据操作 Scanner in=new Scanner(System.in); //1.获取数据源 DataSource dataSource=new MysqlDataSource(); //1.1配置路径,用户名和密码 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_106_1?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("123456"); //2.获取数据库连接,抛异常给jvm处理,如果遇到异常直接终止程序 Connection connection=dataSource.getConnection(); //3.动态写入增加sql语句到student表中 String sql="insert into student values(?,?)"; //3.1创建statement对象,接收连接. PreparedStatement statement=connection.prepareStatement(sql); //写入sql数据 int id=in.nextInt(); //多写一行line防止下面输入字符串时遇到int的回车退出。 in.nextLine(); String name=in.nextLine(); //默认第一个问号从1开始,这里的1,2就是上面创建sql语句时问号的位置。 statement.setInt(1,id); statement.setString(2,name); //4.执行sql语句 int ret=statement.executeUpdate(); System.out.println(ret); //5.释放资源,先创建的后释放,后创建的先释放 statement.close(); connection.close(); } }
修改语句连接:
package src; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; public class JDBCUpdateDemo { public static void main(String[] args) throws SQLException { //JDBC连接数据库修改操作,相比添加操作只需要修改sql语句 Scanner in=new Scanner(System.in); //1.获取数据源 DataSource dataSource=new MysqlDataSource(); //1.1配置路径,用户名和密码 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_106_1?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("123456"); //2.获取数据库连接,抛异常给jvm处理,如果遇到异常直接终止程序 Connection connection=dataSource.getConnection(); //3.动态写入增加sql语句到student表中 String sql="update student set id=?,name=? where id=?"; //3.1创建statement对象,接收连接. PreparedStatement statement=connection.prepareStatement(sql); //写入sql数据 System.out.println("请输入你修改后的新id:"); int newid=in.nextInt(); //多写一行line防止下面输入字符串时遇到int的回车退出。 in.nextLine(); System.out.println("请输入你修改后的新name:"); String newname=in.nextLine(); System.out.println("请输入你要修改的原id位置:"); int id=in.nextInt(); //默认第一个问号从1开始,这里的1,2就是上面创建sql语句时问号的位置。 statement.setInt(1,newid); statement.setString(2,newname); statement.setInt(3,id); //4.执行sql语句 int ret=statement.executeUpdate(); System.out.println(ret); //5.释放资源,先创建的后释放,后创建的先释放 statement.close(); connection.close(); } }
删除语句连接:
package src; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; public class JDBCDeleteDemo { public static void main(String[] args) throws SQLException { //JDBC连接数据库删除操作,相比修改操作只需要改sql语句 Scanner in=new Scanner(System.in); //1.获取数据源 DataSource dataSource=new MysqlDataSource(); //1.1配置路径,用户名和密码 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_106_1?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("123456"); //2.获取数据库连接,抛异常给jvm处理,如果遇到异常直接终止程序 Connection connection=dataSource.getConnection(); //3.动态写入增加sql语句到student表中 String sql="delete from student where id=?"; //3.1创建statement对象,接收连接. PreparedStatement statement=connection.prepareStatement(sql); //写入sql数据 System.out.println("请输入你删除的id:"); int newid=in.nextInt(); //多写一行line防止下面输入字符串时遇到int的回车退出。 //默认第一个问号从1开始,这里的1,2就是上面创建sql语句时问号的位置。 statement.setInt(1,newid); //4.执行sql语句 int ret=statement.executeUpdate(); System.out.println(ret); //5.释放资源,先创建的后释放,后创建的先释放 statement.close(); connection.close(); } }
查询语句连接:
package src; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Scanner; public class JDBCSeleteDemo { public static void main(String[] args) throws SQLException { //JDBC连接数据库修改操作,相比添加操作只需要修改sql语句 Scanner in=new Scanner(System.in); //1.获取数据源 DataSource dataSource=new MysqlDataSource(); //1.1配置路径,用户名和密码 ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java_106_1?characterEncoding=utf8&useSSL=false"); ((MysqlDataSource)dataSource).setUser("root"); ((MysqlDataSource)dataSource).setPassword("123456"); //2.获取数据库连接,抛异常给jvm处理,如果遇到异常直接终止程序 Connection connection=dataSource.getConnection(); //3.动态写入增加sql语句到student表中 String sql="select * from student"; //3.1创建statement对象,接收连接. PreparedStatement statement=connection.prepareStatement(sql); //4.执行sql语句,使用resultset结果集接收query的值,遍历结果集输出查询内容 //!!注意!!增删改用statement.executeUpdate,查询用executeQuery ResultSet resultSet =statement.executeQuery(); //通过next来遍历,直到没有就跳出循环 while(resultSet.next()){ //接收遍历得到的数据 //此处接收的名字要和数据库的字段名一一对应. int id=resultSet.getInt("id"); String name=resultSet.getString("name"); System.out.println(id+" "+name); } //5.释放资源,先创建的后释放,后创建的先释放 statement.close(); connection.close(); } }
总结:
本次JDBC连接主要是针对MySQL数据库的连接,我们需要勤加联系这些代码,因为它都是一个固定的模板,我们只要掌握了,就可以随时拿出来用,这也是我们网页开发连接服务器和客户端的重要工具,也算是网页开发的基础内容,我们需要特别熟悉!
所有成功的开始还得基于牢靠的基础,努力学习,坚持编码,编程伴随每一天!