简单概述:简单来说,JDBC就是java语言用来连接数据库的一种技术,使用java程序来操作数据库,实现数据的存储和处理。
准确介绍:JDBC准确来说是java提供一组API(方法),声明在java.sql包与javax.sql包中,这些方法主要是接口,它更像是一种规范行为。然后由各个不同的数据厂商来对这些接口进行实现,而这些对接口实现的类就构成了各个不同数据库的驱动类,这些驱动类就构成了各个不同数据库的驱动jar包。
1.准备Mysql驱动jar包
先给没有jar包的小伙伴分享链接Mysql驱动jar包8.0版本,提取码4ysr,也就2.2mb,超快的,下载之后将jar包存放在一个文件夹中,位置你自己定,待会IDEA中引入jar包你要记住位置。这里我放在了D:\Mysql驱动jar包位置
2.打开IDEA,进入你的IDEA项目,单击左上方File,点击Project Structure。
3.在弹出来的界面,先点击Libralies,然后点击java
4.在弹出来的页面,选择jar包存放的文件夹,不用精确到jar包位置,然后单击确定
5.在弹出来的页面,这里是让你选择将此jar包应用到哪些模块,由于我这里就只创建了一个MyDemo项目,所以只有一个选项,直接点击ok就行
6.在弹出来的页面,先单击Apply,然后点击确定。
7.直接如图所示吧,多了你引入的文件说明该项目导入jar包成功,接下来就可以进行愉快的java程序操作数据库了。
注意:如果按照我的步骤,最后第7步没有出现如图所示的文件,你可以重新使用我的步骤再来一遍,注意第6步一定要先点击Apply,一般都会成功的。
直接给你们看代码了,你们要的注释我都放在代码里边了,超级详细的
import java.sql.*; public class Main { public static void main(String[] args) throws ClassNotFoundException, SQLException { /** * 第一步:连接Mysql数据库,只需要三行代码,实际上两行就行 * 1.Class.forName("com.mysql.cj.jdbc.Driver"); * 作用:加载Mysql驱动类在内存中,这行代码在连接Mysql数据库的时候可以不加,如果连接 * 其他数据库需要加,因为Mysql特有的可以自动导入驱动类 * 2.String url = "jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC"; * 说明: * 1)连接Mysql数据库你需要提供以下信息: * a.提供mysql服务端所在的主机ip地址或者主机名 * b.提供Mysql服务端的端口号 * c.提供Mysql服务端的用户名 * d.提供Mysql服务端的密码 * e.提供你需要操作的数据库名称 * 2)对url字段串解释: * jdbc:是主协议、mysql:是子协议 * localhost表示连接本机的mysql数据库、3306是端口号、mydb是Mysql里的一个数据库名称 * ?serverTimezone=UTC 表示设置时区为标准国际时区,不设置会出异常导致连接补上,这一行照抄就行 * 3.Connection con = DriverManager.getConnection(url,"root","password"); * 说明: * 1)DriverManager 是驱动管理类,是java.sql包下的类 * 2)getConnection 是获取一个数据库连接的方法 * url: 第一个参数,跟着写就行 * "root":Mysql数据库的用户名,用你自己的 * "password":Mysql数据库密码,用你自己的 * 返回一个连接对象 * 注意:使用以上类和方法需要导入java.sql包,因为JDBC技术的接口包都在其中,以下方法都有异常抛出, * 我们直接给扔给main方法就行。 */ Class.forName("com.mysql.cj.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC"; Connection con = DriverManager.getConnection(url,"root","password"); //程序如果走到这里,你的Mysql数据库就链接成功了,如果连接失败,你就回头从新检查参数url或者用户名密码是否设置正确 //此时连接的就是mydb数据库,然后可以对象mydb中的表格进行操作了 System.out.println("数据库连接成功!"); } }
一样,注释都放在代码里,注意我的代码是一步一步给你们看的,最后会合并在一起
/** * 第二步:实现增加记录的操作 * 步骤为: * 1.编写增加记录的sql语句 * 2.通过con将sql语句传入一个PreparedStatement对象,同时将这个对象返回 * 3.通过返回的PreparedStatement对象的executeUpdate()方法发送sql语句,同时数据库会返回一个结果,这个结果是影响的记录数 * 4.如果不继续使用con连接了和PreparedStatement对象了就释放资源 * 注意:除了查询,其他方法一律都使用executeUpdate() */ //1.编写sql语句:sql字段串里面是具体的sql语句,这里我就不多说了 String sql ="insert into item values(字段值1,字段值2...)"; //2.获取PreparedStatement对象 PreparedStatement ps = con.prepareStatement(sql);//参数将sql语句传入 //3.通过ps发送sql语句,同时获取返回值,影响的记录数 int len = ps.executeUpdate(); //4.如果你不继续操作了就关闭,都是close()方法,我还要继续删除、修改、查询操作就不关闭了
直接上代码,注释都在里边,这里和上面差不多,只是修改sql语句
/** * 第三步:实现删除记录的操作(基本上面类似,只是sql语句不一样而已) * 步骤为: * 1.编写增加记录的sql语句 * 2.通过con将sql语句传入一个PreparedStatement对象,同时将这个对象返回 * 3.通过返回的PreparedStatement对象的executeUpdate()方法发送sql语句,同时数据库会返回一个结果,这个结果是影响的记录数 * 4.如果不继续使用con连接了和PreparedStatement对象了就释放资源 * 注意:除了查询,其他方法一律都使用executeUpdate() */ //1.编写sql语句:sql字段串里面是具体的sql语句,这里我就不多说了 sql ="这里面是删除的sql语句"; //2.获取PreparedStatement对象 ps = con.prepareStatement(sql);//参数将sql语句传入 //3.通过ps发送sql语句,同时获取返回值,影响的记录数 len = ps.executeUpdate(); //4.如果你不继续操作了就关闭,都是close()方法,我还要继续删除、修改、查询操作就不关闭了
直接上代码,注释都在里边,这里和上面差不多,只是修改sql语句
/** * 第四步:实现修改记录的操作(基本上面类似,只是sql语句不一样而已) * 步骤为: * 1.编写增加记录的sql语句 * 2.通过con将sql语句传入一个PreparedStatement对象,同时将这个对象返回 * 3.通过返回的PreparedStatement对象的executeUpdate()方法发送sql语句,同时数据库会返回一个结果,这个结果是影响的记录数 * 4.如果不继续使用con连接了和PreparedStatement对象了就释放资源 * 注意:除了查询,其他方法一律都使用executeUpdate() */ //1.编写sql语句:sql字段串里面是具体的sql语句,这里我就不多说了 sql ="这里面是修改的sql语句"; //2.获取PreparedStatement对象 ps = con.prepareStatement(sql);//参数将sql语句传入 //3.通过ps发送sql语句,同时获取返回值,影响的记录数 len = ps.executeUpdate(); //4.如果你不继续操作了就关闭,都是close()方法,我还要继续删除、修改、查询操作就不关闭了
注意:查询记录的步骤和方法和上面有很大区别,且详细看看代码里的注释
/** * 第五步:实现查询记录的操作(和上面大不相同,详细看) * 步骤为: * 1.编写增加记录的sql语句 * 2.通过con将sql语句传入一个PreparedStatement对象,同时将这个对象返回 * 3.通过返回的PreparedStatement对象的***executeQuery()方法***发送sql语句 * 注意: * 1)查询语句都是使用executeQuery()方法 * 2)数据库返回来的是一个ResultSet对象,里边存放了你想要查询的数据 * 4.遍历返回来的ResultSet对象,打印数据,具体规则看代码注释 * 5.如果不继续使用con连接了和PreparedStatement对象了就释放资源 * 注意:除了查询,其他方法一律都使用executeUpdate() */ //1.编写sql语句:sql字段串里面是具体的sql语句,这里我就不多说了 sql ="这里面是查询的sql语句"; //2.获取PreparedStatement对象 ps = con.prepareStatement(sql);//参数将sql语句传入 //3.通过ps发送sql语句,同时获取返回值,是一个数据的集合 ResultSet set = ps.executeQuery(); //4.遍历该集合 //set.next() 该方法是判断是否还有下一行数据 while(set.next()) {//一次读取一行数据 //注意:这里的Object都可以替换为具体的数据类型,我为了演示才用的Object Object value1 = set.getObject(1);//数据中表的字段值序号,第1列 Object value2 = set.getObject(2);//数据中表的字段值序号,第2列 Object value3 = set.getObject(3);//数据中表的字段值序号,第3列 //将获取到的一行的不同字段值依次打印出来看看 System.out.println(value1 + "\t" + value2 + "\t" + value3); } //4.如果你不继续操作了就关闭,都是close()方法,我还要继续删除、修改、查询操作就不关闭了 con.close();//关闭连接 ps.close();//关闭PreparedStatement对象
import java.sql.*; public class Main { public static void main(String[] args) throws ClassNotFoundException, SQLException { /** * 第一步:连接Mysql数据库,只需要三行代码,实际上两行就行 * 1.Class.forName("com.mysql.cj.jdbc.Driver"); * 作用:加载Mysql驱动类在内存中,这行代码在连接Mysql数据库的时候可以不加,如果连接 * 其他数据库需要加,因为Mysql特有的可以自动导入驱动类 * 2.String url = "jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC"; * 说明: * 1)连接Mysql数据库你需要提供以下信息: * a.提供mysql服务端所在的主机ip地址或者主机名 * b.提供Mysql服务端的端口号 * c.提供Mysql服务端的用户名 * d.提供Mysql服务端的密码 * e.提供你需要操作的数据库名称 * 2)对url字段串解释: * jdbc:是主协议、mysql:是子协议 * localhost表示连接本机的mysql数据库、3306是端口号、mydb是Mysql里的一个数据库名称 * ?serverTimezone=UTC 表示设置时区为标准国际时区,不设置会出异常导致连接补上,这一行照抄就行 * 3.Connection con = DriverManager.getConnection(url,"root","password"); * 说明: * 1)DriverManager 是驱动管理类,是java.sql包下的类 * 2)getConnection 是获取一个数据库连接的方法 * url: 第一个参数,跟着写就行 * "root":Mysql数据库的用户名,用你自己的 * "password":Mysql数据库密码,用你自己的 * 返回一个连接对象 * 注意:使用以上类和方法需要导入java.sql包,因为JDBC技术的接口包都在其中,以下方法都有异常抛出, * 我们直接给扔给main方法就行。 */ Class.forName("com.mysql.cj.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC"; Connection con = DriverManager.getConnection(url,"root","password"); //程序如果走到这里,你的Mysql数据库就链接成功了,如果连接失败,你就回头从新检查参数url或者用户名密码是否设置正确 System.out.println("数据库连接成功!"); /** * 第二步:实现增加记录的操作 * 步骤为: * 1.编写增加记录的sql语句 * 2.通过con将sql语句传入一个PreparedStatement对象,同时将这个对象返回 * 3.通过返回的PreparedStatement对象的executeUpdate()方法发送sql语句,同时数据库会返回一个结果,这个结果是影响的记录数 * 4.如果不继续使用con连接了和PreparedStatement对象了就释放资源 * 注意:除了查询,其他方法一律都使用executeUpdate() */ //1.编写sql语句:sql字段串里面是具体的sql语句,这里我就不多说了 String sql ="insert into item values(字段值1,字段值2...)"; //2.获取PreparedStatement对象 PreparedStatement ps = con.prepareStatement(sql);//参数将sql语句传入 //3.通过ps发送sql语句,同时获取返回值,影响的记录数 int len = ps.executeUpdate(); //4.如果你不继续操作了就关闭,都是close()方法,我还要继续删除、修改、查询操作就不关闭了 /** * 第三步:实现删除记录的操作(基本上面类似,只是sql语句不一样而已) * 步骤为: * 1.编写增加记录的sql语句 * 2.通过con将sql语句传入一个PreparedStatement对象,同时将这个对象返回 * 3.通过返回的PreparedStatement对象的executeUpdate()方法发送sql语句,同时数据库会返回一个结果,这个结果是影响的记录数 * 4.如果不继续使用con连接了和PreparedStatement对象了就释放资源 * 注意:除了查询,其他方法一律都使用executeUpdate() */ //1.编写sql语句:sql字段串里面是具体的sql语句,这里我就不多说了 sql ="这里面是删除的sql语句"; //2.获取PreparedStatement对象 ps = con.prepareStatement(sql);//参数将sql语句传入 //3.通过ps发送sql语句,同时获取返回值,影响的记录数 len = ps.executeUpdate(); //4.如果你不继续操作了就关闭,都是close()方法,我还要继续删除、修改、查询操作就不关闭了 /** * 第四步:实现修改记录的操作(基本上面类似,只是sql语句不一样而已) * 步骤为: * 1.编写增加记录的sql语句 * 2.通过con将sql语句传入一个PreparedStatement对象,同时将这个对象返回 * 3.通过返回的PreparedStatement对象的executeUpdate()方法发送sql语句,同时数据库会返回一个结果,这个结果是影响的记录数 * 4.如果不继续使用con连接了和PreparedStatement对象了就释放资源 * 注意:除了查询,其他方法一律都使用executeUpdate() */ //1.编写sql语句:sql字段串里面是具体的sql语句,这里我就不多说了 sql ="这里面是修改的sql语句"; //2.获取PreparedStatement对象 ps = con.prepareStatement(sql);//参数将sql语句传入 //3.通过ps发送sql语句,同时获取返回值,影响的记录数 len = ps.executeUpdate(); //4.如果你不继续操作了就关闭,都是close()方法,我还要继续删除、修改、查询操作就不关闭了 /** * 第五步:实现查询记录的操作(和上面大不相同,详细看) * 步骤为: * 1.编写增加记录的sql语句 * 2.通过con将sql语句传入一个PreparedStatement对象,同时将这个对象返回 * 3.通过返回的PreparedStatement对象的***executeQuery()方法***发送sql语句 * 注意: * 1)查询语句都是使用executeQuery()方法 * 2)数据库返回来的是一个ResultSet对象,里边存放了你想要查询的数据 * 4.遍历返回来的ResultSet对象,打印数据,具体规则看代码注释 * 5.如果不继续使用con连接了和PreparedStatement对象了就释放资源 * 注意:除了查询,其他方法一律都使用executeUpdate() */ //1.编写sql语句:sql字段串里面是具体的sql语句,这里我就不多说了 sql ="这里面是查询的sql语句"; //2.获取PreparedStatement对象 ps = con.prepareStatement(sql);//参数将sql语句传入 //3.通过ps发送sql语句,同时获取返回值,是一个数据的集合 ResultSet set = ps.executeQuery(); //4.遍历该集合 //set.next() 该方法是判断是否还有下一行数据 while(set.next()) {//一次读取一行数据 //注意:这里的Object都可以替换为具体的数据类型,我为了演示才用的Object Object value1 = set.getObject(1);//数据中表的字段值序号,第1列 Object value2 = set.getObject(2);//数据中表的字段值序号,第2列 Object value3 = set.getObject(3);//数据中表的字段值序号,第3列 //将获取到的一行的不同字段值依次打印出来看看 System.out.println(value1 + "\t" + value2 + "\t" + value3); } //4.如果你不继续操作了就关闭,都是close()方法,我还要继续删除、修改、查询操作就不关闭了 con.close();//关闭连接 ps.close();//关闭PreparedStatement对象 } }
相信看到这里大家对JDBC技术已经有了一定的了解啦,感谢大家的观看与支持,码文不易,一键三连多多支持,谢谢!!!