当前位置: 首页 > news >正文

余姚做网站62752762白人与黑人做爰网站

余姚做网站62752762,白人与黑人做爰网站,wordpress照相馆主题,wordpress 上传类我走我的路#xff0c;有人拦也走#xff0c;没人陪也走 —— 24.6.7 JDBC JDBC就是使用Java语言操作关系型数据库的一套API 一、JDBC简介 JDBC 概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称:(Java DataBase Connectivity)意为Java 数据库连接 JDBC 本质: ①… 我走我的路有人拦也走没人陪也走                                                 —— 24.6.7 JDBC JDBC就是使用Java语言操作关系型数据库的一套API 一、JDBC简介 JDBC 概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称:(Java DataBase Connectivity)意为Java 数据库连接 JDBC 本质: ① 官方(sun公司)定义的一套操作所有关系型数据库的规则即接口 ② 各个数据库厂商去实现这套接口提供数据库驱动jar包 ③ 我们可以使用这套接口(JDBC)编程真正执行的代码是驱动jar包中的实现类 JDBC 好处: ① 各数据库厂商使用相同的接口Java代码不需要针对不同数据库分别开发 ② 可随时替换底层数据库访问数据库的Java代码基本不变 二、JDBC快速入门 步骤 package JavaJDBCBase;import java.sql.*;public class Demo1JDBCQuick {public static void main(String[] args) throws ClassNotFoundException, SQLException {// 1. 注册驱动Class.forName(com.mysql.cj.jdbc.Driver);// 2.获取数据库连接String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;// 获取链接对象Connection conn DriverManager.getConnection(url,username,password);// 3.获取执行sql的对象statement(把sql语句发送给MySQL)Statement stmt conn.createStatement();// 4.编写sql语句并执行以及接收返回的结果集String sql select emp_id,emp_name,emp_salary,emp_age from t_tmp;ResultSet result stmt.executeQuery(sql);// 5.处理结果遍历result结果集 next方法判断有没有下一行while (result.next()) {int empId result.getInt(emp_id);String empName result.getString(emp_name);double empSalary result.getDouble(emp_salary);int empAge result.getInt(emp_age);System.out.println(empId\tempName\tempSalary\tempAge);}// 6.释放资源 先开启后关闭原则result.close();stmt.close();conn.close();} }三、JDBC 核心API 详解  1.注册驱动 Class.forName(com.mysql.cj.jdbc.Driver); 在 Java 中当使用 JDBC(Java Database Connectivity)连接数据库时需要加载数据库特定的驱动程序以便与数据库进行通信。加载驱动程序的目的是为了注册驱动程序使得 JDBC API能够识别并与特定的数据库进行交互。 // 1. 注册驱动 // Class.forName(com.mysql.cj.jdbc.Driver);DriverManager.registerDriver(new Driver()); 从JDK6开始不再需要显式地调用 class.forName()来加载JDBC 驱动程序只要在类路径中集成了对应的jar文件会自动在初始化时注册驱动程序。 2.Connection Connection接口是JDBC API的重要接口用于建立与数据库的通信通道。换而言之Connection对象不为空则代表一次数据库连接。         在建立连接时需要指定数据库URL、用户名、密码参数。                 URL:jdbc:mysql://localhost:3306/atguigu jdbc:mysql://IP地址:端口号/数据库名称 ? 参数键值对1 参数键值对2 Connection 接口还负责管理事务Connection 接口提供了 commit 和 rollback 方法用于提交事务和回滚事务。         可以创建 statement 对象用于执行 SQL语句并与数据库进行交互。         在使用JDBC技术时必须要先获取Connection对象在使用完毕后要释放资源避免资源占用浪费及泄漏。 3.Statement了解 Statement 接口用于执行 SQL语句并与数据库进行交互。它是 JDBC API 中的一个重要接口。通过Statement 对象可以向数据库发送 SQL语句并获取执行结果。         结果可以是一个或多个结果。                 增删改:受影响行数单个结果。                 查询:单行单列、多行多列、单行多列等结果。         但是 Statement 接口在执行SQL语句时会产生SQL注入攻击问题:         当使用 statement 执行动态构建的 SQL查询时往往需要将查询条件与SQL语句拼接在一起直接将参数和SQL语句一并生成让SQL的查询条件始终为true得到结果。 4.PreparedStatement Preparedstatement是 Statement 接口的子接口用于执行 预编译的 SQL查询作用如下。 预编译SQL语句:在创建Preparedstatement时就会预编译SQL语句也就是SQL语句已经固定          防止SQL注入: Preparedstatement 支持参数化查询将数据作为参数传递到SQL语句中采用?占位符的方式将传入的参数用一对单引号包裹起来无论传递什么都作为值。有效防止传入关键字或值导致SQL注入问题。         性能提升:Preparedstatement是预编译SQL语句同一SQL语句多次执行的情况下可以复用不必每次重新编译和解析。 import java.sql.*; import java.util.Scanner;public class Demo2PreparedStatement {public static void main(String[] args) throws Exception {// 1.注册驱动// 2.获取链接对象String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;Connection conn DriverManager.getConnection(url,username,password);// 3.获取执行sql语句对象PreparedStatement preparedStatement conn.prepareStatement(select emp_id,emp_name,emp_salary,emp_age from t_tmp where emp_id?);System.out.println(请输入员工编号);Scanner sc new Scanner(System.in);String name sc.nextLine();// 4.为占位符赋值并执行sql语句并执行接受返回的结果preparedStatement.setString(1,name);ResultSet resultSet preparedStatement.executeQuery();// 5.处理结果遍历esultSetwhile(resultSet.next()){int emp_id resultSet.getInt(emp_id);String emp_name resultSet.getString(emp_name);int emp_age resultSet.getInt(emp_age);double emp_salary resultSet.getDouble(emp_salary);System.out.println(emp_id\temp_name\temp_age\temp_salary);}// 6.释放资源resultSet.close();preparedStatement.close();conn.close();} }package JavaJDBCBase;import java.sql.*; import java.util.Scanner;public class Demo2PreparedStatement {public static void main(String[] args) throws Exception {// 1.注册驱动// 2.获取链接对象String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;Connection conn DriverManager.getConnection(url,username,password);// 3.获取执行sql语句对象PreparedStatement preparedStatement conn.prepareStatement(select emp_id,emp_name,emp_salary,emp_age from t_tmp where emp_name? || emp_salary?);System.out.println(请输入员工姓名);Scanner sc new Scanner(System.in);String name sc.nextLine();System.out.println(请输入员工工资);double salary sc.nextDouble();// 4.为占位符赋值并执行sql语句并执行接受返回的结果 int类型参数的下标从0开始要替换的值为多少preparedStatement.setString(1,name);preparedStatement.setDouble(2,salary);ResultSet resultSet preparedStatement.executeQuery();// 5.处理结果遍历resultSetwhile(resultSet.next()){int emp_id resultSet.getInt(emp_id);String emp_name resultSet.getString(emp_name);int emp_age resultSet.getInt(emp_age);double emp_salary resultSet.getDouble(emp_salary);System.out.println(emp_id\temp_name\temp_age\temp_salary);String goal resultSet.getString(emp_id);System.out.println(emp_nameid为goal);}// 6.释放资源resultSet.close();preparedStatement.close();conn.close();} }5.ResultSet ResultSet 是JDBC API中的一个接口用于表示从数据库中 执行査询语句所返回的结果集。它提供了一种于遍历和访问查询结果的方式。         遍历结果:Resultset可以使用 next()方法将游标移动到结果集的下一行逐行遍历数据库查询的结果返回值为boolean类型true代表有下一行结果false则代表没有。 获取单列结果:可以通过get类型()的方法获取单列的数据该方法为重载方法支持索引和列名进行获取。 String goal resultSet.getString(emp_name);System.out.println(goal); package JavaJDBCBase;import java.sql.*; import java.util.Scanner;public class Demo2PreparedStatement {public static void main(String[] args) throws Exception {// 1.注册驱动// 2.获取链接对象String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;Connection conn DriverManager.getConnection(url,username,password);// 3.获取执行sql语句对象PreparedStatement preparedStatement conn.prepareStatement(select emp_id,emp_name,emp_salary,emp_age from t_tmp where emp_id?);System.out.println(请输入员工编号);Scanner sc new Scanner(System.in);String name sc.nextLine();// 4.为占位符赋值并执行sql语句并执行接受返回的结果preparedStatement.setString(1,name);ResultSet resultSet preparedStatement.executeQuery();// 5.处理结果遍历esultSetwhile(resultSet.next()){int emp_id resultSet.getInt(emp_id);String emp_name resultSet.getString(emp_name);int emp_age resultSet.getInt(emp_age);double emp_salary resultSet.getDouble(emp_salary);System.out.println(emp_id\temp_name\temp_age\temp_salary);String goal resultSet.getString(emp_name);System.out.println(goal);}// 6.释放资源resultSet.close();preparedStatement.close();conn.close();} }四、基于Preparedstatement实现CRUD 1.查询单行单列 // 单行单列查询Testpublic void testQuerySingleRowAndCol() throws SQLException {// 1.注册驱动// 2.获取连接String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;Connection connection DriverManager.getConnection(url, username, password);// 3.预编译SQL语句得到PreparedStatement对象PreparedStatement preparedStatement connection.prepareStatement(select count(*) as count from t_tmp);// 4.执行语句 获取结果ResultSet resultSet preparedStatement.executeQuery();// 5.处理结果进行遍历,如果明确只有一个结果那么resultSet至少要做一次next的判断才能拿到我们要的列的结果while (resultSet.next()) {// 用下标获取int anInt resultSet.getInt(1);System.out.println(anInt);}// 6.释放资源resultSet.close();preparedStatement.close();connection.close();}2.查询单行多列 // 单行多列查询Testpublic void testQuerySingleRowAndCol2() throws SQLException {// 1.注册驱动// 2.获取链接Connection connection DriverManager.getConnection(jdbc:mysql://localhost:3306/JDBC, root, 954926928lcl);// 3.预编译SQL语句获得PreparedStatement对象PreparedStatement preparedStatement connection.prepareStatement(select emp_id,emp_name,emp_salary,emp_age from t_tmp where emp_id ?);// 4.为占位符赋值然后执行并接受结果preparedStatement.setInt(1,5);ResultSet resultSet preparedStatement.executeQuery();// 5.处理结果while (resultSet.next()) {int empId resultSet.getInt(emp_id);String empName resultSet.getString(emp_name);double empSalary resultSet.getDouble(emp_salary);int empAge resultSet.getInt(emp_age);System.out.println(empId\tempName\tempSalary\tempAge);}// 6.资源释放resultSet.close();preparedStatement.close();connection.close();} 3.查询多行多列 // 多行多列查询Testpublic void testQueryMoreRow() throws SQLException {String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;Connection conn DriverManager.getConnection(url,username,password);PreparedStatement preparedStatement conn.prepareStatement(select emp_id,emp_name,emp_salary,emp_age from t_tmp where emp_age ?);preparedStatement.setInt(1,25);ResultSet resultSet preparedStatement.executeQuery();while (resultSet.next()) {int empId resultSet.getInt(emp_id);String empName resultSet.getString(emp_name);double empSalary resultSet.getDouble(emp_salary);int empAge resultSet.getInt(emp_age);System.out.println(empId\tempName\tempSalary\tempAge);}resultSet.close();preparedStatement.close();conn.close();}4.新增 // 新增Testpublic void testInsert() throws SQLException {String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;// 获取链接对象Connection conn DriverManager.getConnection(url,username,password);PreparedStatement preparedStatement conn.prepareStatement(insert into t_tmp(emp_name,emp_salary,emp_age) values(?,?,?));preparedStatement.setString(1,rose);preparedStatement.setDouble(2,345.67);preparedStatement.setInt(3,36);int result preparedStatement.executeUpdate();// 根据受影响行数做判断得到成功或失败if (result0){System.out.println(成功);}else{System.out.println(失败);}preparedStatement.close();conn.close();} 5.修改 // 修改Testpublic void testUpdate() throws SQLException {String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;// 获取链接对象Connection conn DriverManager.getConnection(url,username,password);PreparedStatement preparedStatement conn.prepareStatement(update t_tmp set emp_salary ? where emp_id?);preparedStatement.setDouble(1,888.88);preparedStatement.setInt(2,6);int result preparedStatement.executeUpdate();if (result0){System.out.println(成功);}else{System.out.println(失败);}preparedStatement.close();conn.close();} 6.删除 // 删除Testpublic void testDelete() throws SQLException {String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;// 获取链接对象Connection conn DriverManager.getConnection(url,username,password);// 手写SQL语句PreparedStatement preparedStatement conn.prepareStatement(delete from t_tmp where emp_id?);preparedStatement.setInt(1,5);int result preparedStatement.executeUpdate();if (result0){System.out.println(成功);}else{System.out.println(失败);}preparedStatement.close();conn.close();} 7.总结 package JavaJDBCBase;// 在类中写入Test自动导入org.junit.Test便不用重复写main函数 import org.junit.Test;import java.sql.*;public class Demo3JDBCOperation {// 单行单列查询Testpublic void testQuerySingleRowAndCol() throws SQLException {// 1.注册驱动// 2.获取连接String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;Connection connection DriverManager.getConnection(url, username, password);// 3.预编译SQL语句得到PreparedStatement对象PreparedStatement preparedStatement connection.prepareStatement(select count(*) as count from t_tmp);// 4.执行语句 获取结果ResultSet resultSet preparedStatement.executeQuery();// 5.处理结果进行遍历,如果明确只有一个结果那么resultSet至少要做一次next的判断才能拿到我们要的列的结果while (resultSet.next()) {// 用下标获取int anInt resultSet.getInt(1);System.out.println(anInt);}// 6.释放资源resultSet.close();preparedStatement.close();connection.close();}// 单行多列查询Testpublic void testQuerySingleRowAndCol2() throws SQLException {// 1.注册驱动// 2.获取链接Connection connection DriverManager.getConnection(jdbc:mysql://localhost:3306/JDBC, root, 954926928lcl);// 3.预编译SQL语句获得PreparedStatement对象PreparedStatement preparedStatement connection.prepareStatement(select emp_id,emp_name,emp_salary,emp_age from t_tmp where emp_id ?);// 4.为占位符赋值然后执行并接受结果preparedStatement.setInt(1,5);ResultSet resultSet preparedStatement.executeQuery();// 5.处理结果while (resultSet.next()) {int empId resultSet.getInt(emp_id);String empName resultSet.getString(emp_name);double empSalary resultSet.getDouble(emp_salary);int empAge resultSet.getInt(emp_age);System.out.println(empId\tempName\tempSalary\tempAge);}// 6.资源释放resultSet.close();preparedStatement.close();connection.close();}// 多行多列查询Testpublic void testQueryMoreRow() throws SQLException {String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;Connection conn DriverManager.getConnection(url,username,password);PreparedStatement preparedStatement conn.prepareStatement(select emp_id,emp_name,emp_salary,emp_age from t_tmp where emp_age ?);preparedStatement.setInt(1,25);ResultSet resultSet preparedStatement.executeQuery();while (resultSet.next()) {int empId resultSet.getInt(emp_id);String empName resultSet.getString(emp_name);double empSalary resultSet.getDouble(emp_salary);int empAge resultSet.getInt(emp_age);System.out.println(empId\tempName\tempSalary\tempAge);}resultSet.close();preparedStatement.close();conn.close();}// 新增Testpublic void testInsert() throws SQLException {String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;// 获取链接对象Connection conn DriverManager.getConnection(url,username,password);PreparedStatement preparedStatement conn.prepareStatement(insert into t_tmp(emp_name,emp_salary,emp_age) values(?,?,?));preparedStatement.setString(1,rose);preparedStatement.setDouble(2,345.67);preparedStatement.setInt(3,36);int result preparedStatement.executeUpdate();// 根据受影响行数做判断得到成功或失败if (result0){System.out.println(成功);}else{System.out.println(失败);}preparedStatement.close();conn.close();}// 修改Testpublic void testUpdate() throws SQLException {String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;// 获取链接对象Connection conn DriverManager.getConnection(url,username,password);PreparedStatement preparedStatement conn.prepareStatement(update t_tmp set emp_salary ? where emp_id?);preparedStatement.setDouble(1,888.88);preparedStatement.setInt(2,6);int result preparedStatement.executeUpdate();if (result0){System.out.println(成功);}else{System.out.println(失败);}preparedStatement.close();conn.close();}// 删除Testpublic void testDelete() throws SQLException {String url jdbc:mysql://localhost:3306/JDBC;// 用户名String username root;// 密码String password 954926928lcl;// 获取链接对象Connection conn DriverManager.getConnection(url,username,password);// 手写SQL语句PreparedStatement preparedStatement conn.prepareStatement(delete from t_tmp where emp_id?);preparedStatement.setInt(1,5);int result preparedStatement.executeUpdate();if (result0){System.out.println(成功);}else{System.out.println(失败);}preparedStatement.close();conn.close();} }五、常见问题 1.资源的管理 2.SQL语句问题 3.SQL语句未设置参数问题 4.用户名或密码错误问题 5.通信异常
http://www.w-s-a.com/news/390926/

相关文章:

  • 外贸网站怎样做小程序买量平台
  • 中山精品网站建设机构海外留学网站建设方案
  • 长春网站建设工作如何取消wordpress页脚
  • 忻府网站建设排名网络管理系统官网
  • 张家港外贸网站建设国医堂网站平台建设
  • 水冶那里有做网站的对于网站链接优化有哪些建议
  • 宝安中心地铁站是几号线化妆品网站做的好的
  • 海宁营销型网站设计企业融资是什么意思
  • 淘宝客做网站要钱吗网站开发试题库
  • 10g空间网站做视频网站网站建设找超速云
  • 一元购网站怎么做企业网站源码cms
  • 域名不变 网站改版临沂企业网站建站模板
  • 天河网站建设信科网络外包公司和公司直招哪个好
  • 网站制作哈尔滨聊天系统源码
  • 网站建设朋友圈素材青白江建设网站
  • 红酒网站设计软件设计文档
  • 如何创建网站目录网站申请支付宝接口
  • 网站做区块链然后往里面投钱品牌设计公司收费标准
  • 2022互联网+创新创业项目呼和浩特企业网站排名优化
  • 电子商务类网站建设山西自助建站系统怎么用
  • odoo做网站网站设置专栏有什么好处
  • 局域网内个人网站建设查询企业的网站有哪些
  • 网站建设属于技术开发吗网页制作团队
  • 做家常菜的网站哪个好哪个网站做图片外链
  • 眼科医院网站设计怎么做6深圳宝安是什么风险等级
  • 网站制作容易吗logo免费生成网站
  • 建设厅官方网站下载专区网络托管公司
  • 祥云平台官方网站网线制作实验原理
  • 把网站做成app的软件下载国外做兼职的网站有哪些
  • 网站建设 海豚弯专业的网站开发服务商