赞
踩
JDBC(java database connectivity):是一个独立于特定的数据库管理系统,通过sql语言操作数据库的一个规范
在java中除了通过jdbc去连接数据库操作数据外,Java还可以通过持久化框架来操作数据库(所有的持久层框架底层全部是通过JDBC封装实现的)
不止是mysql,sqlserver、Oracle、db2等等数据库都是通过JDBC和java进行连接的
jdbc是面向接口编程,针对于每个数据库厂商的不同,提供不同的实现。
每个数据库管理系统连接java的步骤都是统一按照jdbc提供的接口规范
地址:https://dev.mysql.com/downloads/connector/j/
- 在项目目录下创建lib目录,有的话则不用创建
- 把下载好的jdbc的jar包复制到lib目录下,在exlipse或者idea右键点击jar包,build path或者add library,将jar包加载到当前项目
连接数据的驱动有俩种方式可以进行连接
- 通过面向对象的方法进行连接
- 通过反射的方法进行连接,一般常用反射,(通过反射或者配置文件的形式们可以减少代码间的耦合性)
- 注意:在 编写java的程序最好不要出现第三方的api,会使当前的java程序移植性变差
// 方式一:通过面向对象new出来 Driver driver = new com.mysql.cj.jdbc.Driver(); // 方式二:同反射之间加载包地址(常用) Class.forName("com.mysql.cj.jdbc.Driver");
- 1
- 2
- 3
- 4
java提供了一个类帮助我们更好的进行连接管理数据库驱动-DriverManager
/** * url: 数据库地址:jdbc:mysql://数据库ip:端口号/数据库名?携带的参数 * user: 数据库的用户名 * password: 数据库的密码 */ String url = "jdbc:mysql://localhost:3306/school?useUnicode=true&useSSL=true; String user = "root"; String password = "19981104"; /** * 通过DriverManager的getConnection方法提交url,user和password,并且返回数据库连接对象 * connection */ Connection connection = DriverManager.getConnection(url,user,password);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
数据库连接规范写法:
- 因为反射可以拿到类的所有属性,直接在代码中暴露url,用户和密码会不安全,所以信息会写在磁盘中的配置文件
- 这样的好处是帮助我们实现了数据和代码分离,提高了一致性
1、配置文件-properties
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/school?useUnicode=true&useSSL=true user=root password=19981104
- 1
- 2
- 3
- 4
2、读取配置文件
// 通过ClassLoader的资源加载获得文件中的配置文件 InputStream config = ConnectionTest.class.getClassLoader().getResourceAsStream("resources/config.properties"); // 实例化properties对象 Properties prop = new Properties(); try { // properties对象加载配置文件 prop.load(config); // 读取配置文件信息 String driver = prop.getProperty("driver"); String url = prop.getProperty("url"); String user = prop.getProperty("user"); String password = prop.getProperty("password"); // 加载驱动 Class.forName(driver); // 获得数据库连接对象 Connection connection = DriverManager.getConnection(url,user,password); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
通过数据库连接对象connection获取数据库操作对象,数据库的操作对象有三种
Statement 操作数据库的CRUD(增删改查) PreparedStatement 操作数据库的CRUD(增删改查) CallableStatement 操作数据库的存储过程 // 通过connection获得statement或者PrepareStatement Statement statement = connection.createStatement(); PreparedStatement prepareStatement = connection.prepareStatement("here is sql");
- 1
- 2
- 3
增删改的操作结束后,会返回受影响的行数,如果行数大于1,则说明修改成功
添加数据操作
// 操作数据库---添加 // 执行的sql语句 String sql = "insert into student(s_name) values('小红')"; // 使用executeUpdate提交sql,返回了受影响的行数 int res = statement.executeUpdate(sql); // 如果受影响的行数大于1,则说明操作成功 if(res>0) { System.out.println("添加成功!"); }else { System.out.println("添加失败!"); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
删除数据操作
// 操作数据库---删除 // 执行的sql语句 String sql = "delete from student where s_id=1"; // 使用executeUpdate提交sql,返回了受影响的行数 int res = statement.executeUpdate(sql); // 如果受影响的行数大于1,则说明操作成功 if(res>0) { System.out.println("删除成功!"); }else { System.out.println("删除失败!"); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
修改数据操作
// 操作数据库---修改 // 执行的sql语句 String sql = "update student set s_name = '小明' where s_id=1"; // 使用executeUpdate提交sql,返回了受影响的行数 int res = statement.executeUpdate(sql); // 如果受影响的行数大于1,则说明操作成功 if(res>0) { System.out.println("修改成功!"); }else { System.out.println("修改失败!"); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
查询数据操作
// 操作数据库---查询 // 执行的sql语句 String sqlQuery = "select * from student"; // 使用executeQuery提交sql,返回带有结果的set集合 ResultSet resQuery = statement.executeQuery(sqlQuery); // 遍历set集合 while(resQuery.next()) { // 通过set集合的get方法获取对应字段的内容 String s_name = resQuery.getString("s_name"); System.out.println(s_name); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
数据库连接对象,java垃圾回收机制是不会无法回收的,所以一定要关闭资源,关闭的方法和流的关闭一样,准守后开先关
if(res!=null) { try { res.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if(state!=null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if(con!=null) { try { con.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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。