• 10月8日 Jdbc(1)


    jdbc

    接口是一个类的父类

     java连接数据库, java操作数据库,  把java作为数据库的一个客户端

    JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。

    ​        当然还有第三方公司专门为某一数据库提供驱动,这样的驱动往往不是开源免费的!

    jdbc开发步骤:

    1. 编码, 使用jdk提供的jdbc接口(位于java.sql包),

    核心接口: java.sql.Connection(连接)

    ​ java.sql.Statement(发送sql,通知数据库执行)

    ​ java.sql.ResultSet(获取查询sql的结果集)

    一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象

    jdbc开发步骤:

    1. 添加第三方数据库驱动ja

    1. 编码, 使用jdk提供的jdbc接口(位于java.sql包),

            核心接口: java.sql.Connection(连接)

    ​         java.sql.Statement(发送sql,通知数据库执行)

    ​         java.sql.ResultSet(获取查询sql的结果集)

            一个核心类: java.sql.DriverManager(数据库驱动管理器), 得到数据库的连接对象

     jdbc的编码

    //写程序:记住思路和套路  多谢有时候没有太大作用

    >1. 项目中导入数据库驱动jar
    >2. 加载启动类
    >3. 得到连接对象Connection
    >4. 创建Statement对象
    >5. 编写sql语句(java普通字符串)
    >6. 执行之
    >7. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
    >8. 关闭资源

    实现查询 

    1. import java.sql.*;
    2. import java.util.Date;
    3. import java.util.Scanner;
    4. /**
    5. * 查询
    6. */
    7. public class Demo2 {
    8. public static void main(String[] args) {
    9. /*
    10. 1. 加载启动类
    11. 2. 得到连接对象Connection
    12. 3. 创建Statement对象
    13. 4. 编写sql语句(java普通字符串)
    14. 5. 执行之
    15. 6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
    16. 7. 关闭资源
    17. */
    18. Connection conn = null;
    19. Statement statement = null;
    20. ResultSet resultSet = null;
    21. try {
    22. Class.forName("com.mysql.jdbc.Driver");
    23. String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";
    24. conn = DriverManager.getConnection(url, "root", "123");
    25. statement = conn.createStatement();
    26. System.out.print("请输入要查询员工姓名:");
    27. Scanner input = new Scanner(System.in);
    28. String name = input.next();
    29. String sql = "select * from emp where ename = '"+name+"'";
    30. System.out.println(sql);
    31. resultSet = statement.executeQuery(sql);
    32. //循环获取数据, 一行一行的获取
    33. //一定要先调用next()
    34. while(resultSet.next()){
    35. //获取这一行的单元格中数据
    36. // getXxx(int 列序号): 从1开始 Xxx: 数据类型
    37. int empNo = resultSet.getInt(1);
    38. String ename = resultSet.getString(2);
    39. String job = resultSet.getString(3);
    40. int mgr = resultSet.getInt(4);
    41. Date hiredate = resultSet.getDate(5);
    42. double sal = resultSet.getDouble(6);
    43. double comm = resultSet.getDouble(7);
    44. int deptNo = resultSet.getInt(8);
    45. System.out.println(empNo+","+ename+","+job+","+mgr+","+hiredate+","+sal+","+comm+","+deptNo);
    46. }
    47. } catch (ClassNotFoundException e) {
    48. e.printStackTrace();
    49. } catch (SQLException throwables) {
    50. throwables.printStackTrace();
    51. }finally{
    52. //倒序关
    53. try {
    54. if(resultSet != null) {
    55. resultSet.close();
    56. }
    57. if(statement != null) {
    58. statement.close();
    59. }
    60. if(conn != null) {
    61. conn.close();
    62. }
    63. } catch (SQLException throwables) {
    64. throwables.printStackTrace();
    65. }
    66. }
    67. }
    68. }

    使用jdbc操纵数据库

    1. import javax.xml.bind.SchemaOutputResolver;
    2. import java.sql.Connection;
    3. import java.sql.DriverManager;
    4. import java.sql.SQLException;
    5. import java.sql.Statement;
    6. import java.util.Scanner;
    7. /**
    8. * 使用jdbc操作数据
    9. */
    10. public class Demo1 {
    11. public static void main(String[] args) {
    12. /*
    13. 1. 加载启动类
    14. 2. 得到连接对象Connection
    15. 3. 创建Statement对象
    16. 4. 编写sql语句(java普通字符串)
    17. 5. 执行之
    18. 6. 如果增删改, 得到结果: 受影响行数, 如果查询,得到结果集(ResultSet), 解析ResultSet得到数据
    19. 7. 关闭资源
    20. */
    21. Connection conn = null;
    22. Statement statement = null;
    23. try {
    24. //1. 加载启动类 反射 核心: Class
    25. Class.forName("com.mysql.jdbc.Driver");
    26. //2.得到连接对象Connection 通过DriverManager的静态方法getConnection()
    27. String url = "jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf8&useSSL=false";
    28. conn = DriverManager.getConnection(url, "root", "123");
    29. //System.out.println(conn);
    30. System.out.println("与数据库服务器连接上了...");
    31. //3.创建Statement对象
    32. statement = conn.createStatement();
    33. //4.编写sql语句
    34. //System.out.print("请输入要删除的员工编号:");
    35. System.out.print("请输入要加薪的员工编号:");
    36. Scanner input = new Scanner(System.in);
    37. int empno = input.nextInt();
    38. //删除
    39. //String sql ="delete from emp where empno = "+empno;
    40. String sql ="update emp set sal = sal + 500 where empno = "+empno;
    41. //5.执行之 执行增删改sql: Statement的 int executeUpdate(sql)
    42. // 执行查询sql: Statement的 ResultSet executeQuery(sql)
    43. int rs = statement.executeUpdate(sql);
    44. if(rs > 0){
    45. //System.out.println("删除成功");
    46. System.out.println("加薪成功");
    47. }
    48. } catch (ClassNotFoundException e) {//Driver类找不到
    49. //出现原因: 1. 驱动jar没到导入 2. 驱动类包.类名字符串写错
    50. e.printStackTrace();
    51. } catch (SQLException throwables) {
    52. //出现原因: 1. 数据库服务没有开启 2. url写错 3. 用户名错误 4.密码错误
    53. throwables.printStackTrace();
    54. }finally{
    55. //倒序关
    56. try {
    57. if(statement != null) {
    58. statement.close();
    59. }
    60. if(conn != null) {
    61. conn.close();
    62. }
    63. } catch (SQLException throwables) {
    64. throwables.printStackTrace();
    65. }
    66. }
    67. }
    68. }
    important!!! 

  • 相关阅读:
    8月9日笔记
    java毕业设计城市垃圾分类管理系统mybatis+源码+调试部署+系统+数据库+lw
    Go 之 fmt 格式化输入输出
    Markdown使用模板
    动态树的第2大值
    7-77 求给定精度的简单交错序列部分和
    C/C++ 中typedef 关键字的使用 (给类型起别名)
    哪一个更好?Spring boot还是Node.js
    卷积核、特征图可视化
    filter与coalesce的配合使用_尚硅谷大数据培训
  • 原文地址:https://blog.csdn.net/weixin_53415999/article/details/133938905