JDBC链接步骤 1 2 3 url =jdbc:mysql://localhost:3306/userinformation user =root passWord =200101
注册驱动 驱动:即我们从官网下载的jar包,没有jar包,我们可以编译程序,但是程序无法运行,将jar包添加到依赖。
注册驱动的两种方式
多层注册,为了保证代码的整洁,这里将抛出异常的语句删除(com.mysql.jdbc.Driver()来源于我们刚刚导入的jar包,并不是idea自带的 )
1 2 Driver driver=new Driver (); DriverManager.registerDriver(driver);
1 Class.forName("com.mysql.jdbc.Driver" );
获取链接与获取数据库操作对象 1 2 3 4 Connection connection=DriverManager.getConnection(url,user,password); Statement statement=connection.createStatement();
1 2 3 4 5 6 7 8 9 Properties properties=new Properties (); properties.load(new FileReader ("src/Mysql.properties" )); String url= properties.getProperty("url" ); String user= properties.getProperty("user" ); String passWord= properties.getProperty("passWord" ); Connection connection=DriverManager.getConnection(url,user,passWord); Statement statement=connection.createStatement();
定义sql语句以及结果判断 1 2 3 4 5 String insertSql="insert into usersimple values ('张山峰',12,'高管')" ; String insertSql1="insert into usersimple values ('丽丽',25,'职员')" ; String updateSql="update usersimple set 职位='职员' where 职位='高管' " ; String deleteSql="delete from usersimple where 用户名称='丽丽' " ;
结果判断statement.executeUpdate(插入,更新,删除) 1 2 3 4 5 6 7 8 9 10 int count=0 ;count=statement.executeUpdate(insertSql); System.out.println(count==1 ?"插入成功" :"插入失败" ); count=statement.executeUpdate(insertSql1); System.out.println(count==1 ?"插入成功" :"插入失败" ); count=statement.executeUpdate(updateSql); System.out.println(count==1 ?"更新成功" :"更新失败" ); count=statement.executeUpdate(deleteSql); System.out.println(count==1 ?"删除成功" :"删除失败" );
结果判断statement.executeQuery 在Java中,有一个ResultSet的数据类型,专门用于存储select的语句的结果,而且还拥有一个resultSet.next()的类似c语言中指针类型的操作。
next的初始位置在标题位置,next指向下一行,如果有则返回true否则为fasle
1 2 3 4 5 6 7 String selectSql="select * from usersimple" ; ResultSet resultSet=statement.executeQuery(selectSql); while (resultSet.next()){ String userName=resultSet.getString("用户名称" ); int age=resultSet.getInt("年龄" ); String position=resultSet.getString("职位" ); System.out.println(userName+age+position);
关闭通道
当我们执行jdbc时,这个时候是多个线程在同时运行,如果我们结束时候没有结束这些线程,他们会一直保存着,这个连接是与数据库服务器的一个连接,虽然你的方法结束了,但是这个资源依然存在数据库连接并没有释放,如果不设置close,长时间使用,你会发现自己的电脑卡的飞起。👻
线程结束的顺序(就像栈那样,先进行链接,在获取对象,最后看结果,而关闭时,先进后出):
打开时:Connection -> PreparedStatement -> ResultSet 关闭时:ResultSet-> PreparedStatement -> Connection
代码演示(要在finally语句中进行,保证结束后不会在进行其他操作)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 finally { if (resultSet!=null ){try { resultSet.close(); } catch (SQLException e) { e.printStackTrace();}} try { if (statement!=null ) { statement.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (connection!=null ){ connection.close(); } }catch (SQLException e){ e.printStackTrace(); } }
整体实例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 package com.zss.jdbc;import com.mysql.jdbc.Driver;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.sql.*;import java.util.Properties;public class JdbcLearn { public static void main (String[] args) throws ClassNotFoundException, IOException, SQLException { Class cla=Class.forName("com.mysql.jdbc.Driver" ); Properties properties=new Properties (); properties.load(new FileReader ("src/Mysql.properties" )); String url= properties.getProperty("url" ); String user= properties.getProperty("user" ); String passWord= properties.getProperty("passWord" ); Connection connection=DriverManager.getConnection(url,user,passWord); Statement statement=connection.createStatement(); String insertSql="insert into usersimple values ('张山峰',12,'高管')" ; String insertSql1="insert into usersimple values ('丽丽',25,'职员')" ; String updateSql="update usersimple set 职位='职员' where 职位='高管' " ; String deleteSql="delete from usersimple where 用户名称='丽丽' " ; int count=0 ; count=statement.executeUpdate(insertSql); System.out.println(count==1 ?"插入成功" :"插入失败" ); count=statement.executeUpdate(insertSql1); System.out.println(count==1 ?"插入成功" :"插入失败" ); count=statement.executeUpdate(updateSql); System.out.println(count==1 ?"更新成功" :"更新失败" ); count=statement.executeUpdate(deleteSql); System.out.println(count==1 ?"删除成功" :"删除失败" ); String selectSql="select * from usersimple" ; ResultSet resultSet=statement.executeQuery(selectSql); while (resultSet.next()){ String userName=resultSet.getString("用户名称" ); int age=resultSet.getInt("年龄" ); String position=resultSet.getString("职位" ); System.out.println(userName+age+position); } resultSet.close(); statement.close(); connection.close(); } }