• JDBC中对象的解释与statement对象详解


      DriverManager

    1. //1.加载驱动
    2. //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    3. //推荐这种写法加载驱动
    4. Class.forName("com.mysql.jdbc.Driver");
    5. Connection connection = DriverManager.getConnection(url, userName, passWord);
    6. // connection代表数据库
    7. // 数据库设置自动提交
    8. // 事务提交
    9. // 事务回滚
    10. connection.setAutoCommit(true);
    11. connection.commit();
    12. connection.rollback();

      URL

    1. String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false";
    2. // mysql默认端口3306
    3. // 协议://主机地址:端口号/数据库名?参数1&参数2&参数3
    4. // oracle默认端口1521
    5. // jdbc:oracle:thin:@localhost:1521:sid

    Statement 执行sql对象  、  PreparedStatement 执行sql对象

    1. String sql = "SELECT * FROM users";//编写SQL
    2. statement.executeQuery();//执行查询 返回ResultSet
    3. statement.executeUpdate();//新增,删除,修改,都用这个,返回受影响的行数
    4. statement.execute();//执行任何SQL

    ResultSet 查询的结果集,封装了所有的查询结果

    获得指定的数据类型

    1. //在不知道列类型的情况下使用
    2. resultSet.getObject();
    3. //如果知道列类型,就使用指定的类型
    4. resultSet.getString();
    5. resultSet.getInt();
    6. resultSet.getDouble();
    7. resultSet.getBigDecimal();
    8. resultSet.getFloat();
    9. resultSet.getDate();
    10. //...

    遍历,指针

    1. resultSet.beforeFirst();//移动到最前面
    2. resultSet.afterLast();//移动到最后面
    3. resultSet.next();//移动到下一个数据
    4. resultSet.previous();//移动到前一行
    5. resultSet.absolute(row);//移动到指定行

    释放资源

    1. resultSet.close();
    2. statement.close();
    3. connection.close();//消耗资源


    statement对象

            jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。

            Statement对象的executeUpdate方法,用于向数据库发送增、删、改的SQL语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发送了变化)。

            Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。

    CRUD操作-create

    使用executeUpdate(String sql)方法完成数据添加操作,示例操作:

    1. Statement statement = connection.createStatement();
    2. String sql = "insert into user(...) values(...)";
    3. int num = statement.executeUpdate(sql);
    4. if (num > 0) {
    5. System.out.println("插入成功~");
    6. }

    CRUD操作-delete

    1. Statement statement = connection.createStatement();
    2. String sql = "delete from user where id=1";
    3. int num = statement.executeUpdate(sql);
    4. if (num > 0) {
    5. System.out.println("删除成功~");
    6. }

    CRUD操作-update

    1. Statement statement = connection.createStatement();
    2. String sql = "update user set name='' where name =''";
    3. int num = statement.executeUpdate(sql);
    4. if (num > 0) {
    5. System.out.println("修改成功~");
    6. }

    CRUD操作-read

    1. Statement statement = connection.createStatement();
    2. String sql = "SELECT * FROM users";
    3. ResultSet resultSet = statement.executeQuery(sql);
    4. while (resultSet.next()) {
    5. //根据获取列的数据类型,分别调用resultSet的相应方法映射到java对象中
    6. }

    例:

            提取工具类

            配置文件db.properties

    1. driver=com.mysql.jdbc.Driver
    2. url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false
    3. username=root
    4. password=123456

            JdbcUtils 

    1. import java.io.IOException;
    2. import java.io.InputStream;
    3. import java.sql.Connection;
    4. import java.sql.DriverManager;
    5. import java.sql.ResultSet;
    6. import java.sql.SQLException;
    7. import java.sql.Statement;
    8. import java.util.Properties;
    9. public class JdbcUtils {
    10. private static String driver = null;
    11. private static String url = null;
    12. private static String username = null;
    13. private static String password = null;
    14. static {
    15. try {
    16. InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
    17. Properties properties = new Properties();
    18. properties.load(in);
    19. driver = properties.getProperty("driver");
    20. url = properties.getProperty("url");
    21. username = properties.getProperty("username");
    22. password = properties.getProperty("password");
    23. //驱动只用加载一次
    24. Class.forName(driver);
    25. } catch (IOException e) {
    26. e.printStackTrace();
    27. } catch (ClassNotFoundException e) {
    28. e.printStackTrace();
    29. }
    30. }
    31. /**
    32. * 获取连接
    33. */
    34. public static Connection getConnection() throws SQLException {
    35. return DriverManager.getConnection(url, username, password);
    36. }
    37. /**
    38. * 释放资源
    39. */
    40. public static void release(Connection con, Statement st, ResultSet rs) {
    41. if (rs != null) {
    42. try {
    43. rs.close();
    44. } catch (SQLException e) {
    45. e.printStackTrace();
    46. }
    47. }
    48. if (st != null) {
    49. try {
    50. st.close();
    51. } catch (SQLException e) {
    52. e.printStackTrace();
    53. }
    54. }
    55. if (con != null) {
    56. try {
    57. con.close();
    58. } catch (SQLException e) {
    59. e.printStackTrace();
    60. }
    61. }
    62. }
    63. }

            编写增、删、改的方法,executeUpdate

    1. import com.yuan.lesson02.utils.JdbcUtils;
    2. import java.sql.Connection;
    3. import java.sql.ResultSet;
    4. import java.sql.SQLException;
    5. import java.sql.Statement;
    6. public class TestInsert {
    7. public static void main(String[] args) {
    8. Connection con = null;
    9. Statement st = null;
    10. ResultSet rs = null;
    11. try {
    12. con = JdbcUtils.getConnection();
    13. st = con.createStatement();
    14. String sql = "UPDATE INTO users(`id`,`name`,`password`,`email`,`birthday`)\n" +
    15. "VALUES (4,'牛六','123456','niuliu@sina.com','1988-12-04')";
    16. int num = st.executeUpdate(sql);
    17. if (num > 0) {
    18. System.out.println("插入成功!");
    19. }
    20. } catch (SQLException e) {
    21. e.printStackTrace();
    22. } finally {
    23. JdbcUtils.release(con,st,rs);
    24. }
    25. }
    26. }

    1. import com.yuan.lesson02.utils.JdbcUtils;
    2. import java.sql.Connection;
    3. import java.sql.ResultSet;
    4. import java.sql.SQLException;
    5. import java.sql.Statement;
    6. public class TestDelete {
    7. public static void main(String[] args) {
    8. Connection con = null;
    9. Statement st = null;
    10. ResultSet rs = null;
    11. try {
    12. con = JdbcUtils.getConnection();
    13. st = con.createStatement();
    14. String sql = "DELETE FROM users WHERE `id`=4";
    15. int num = st.executeUpdate(sql);
    16. if(num > 0){
    17. System.out.println("删除成功");
    18. }
    19. } catch (SQLException e) {
    20. e.printStackTrace();
    21. }finally{
    22. JdbcUtils.release(con,st,rs);
    23. }
    24. }
    25. }

    1. import com.yuan.lesson02.utils.JdbcUtils;
    2. import java.sql.Connection;
    3. import java.sql.ResultSet;
    4. import java.sql.SQLException;
    5. import java.sql.Statement;
    6. public class TestUpdate {
    7. public static void main(String[] args) {
    8. Connection connection = null;
    9. Statement statement = null;
    10. ResultSet resultSet = null;
    11. try {
    12. connection = JdbcUtils.getConnection();
    13. statement = connection.createStatement();
    14. String sql = "UPDATE users SET birthday='1990-12-01' WHERE id=1";
    15. int num = statement.executeUpdate(sql);
    16. if (num > 0){
    17. System.out.println("更新成功");
    18. }
    19. } catch (SQLException e) {
    20. e.printStackTrace();
    21. }finally {
    22. JdbcUtils.release(connection,statement,resultSet);
    23. }
    24. }

            查询

    1. import com.yuan.lesson02.utils.JdbcUtils;
    2. import java.sql.Connection;
    3. import java.sql.ResultSet;
    4. import java.sql.SQLException;
    5. import java.sql.Statement;
    6. public class TestSelect {
    7. public static void main(String[] args) {
    8. Connection connection = null;
    9. Statement statement = null;
    10. ResultSet resultSet = null;
    11. try {
    12. connection = JdbcUtils.getConnection();
    13. statement = connection.createStatement();
    14. String sql = "SELECT * FROM users WHERE id=1";
    15. resultSet = statement.executeQuery(sql);
    16. while (resultSet.next()){
    17. System.out.println("id="+resultSet.getInt("id"));
    18. System.out.println("name="+resultSet.getString("name"));
    19. }
    20. } catch (SQLException e) {
    21. e.printStackTrace();
    22. }finally {
    23. JdbcUtils.release(connection,statement,resultSet);
    24. }
    25. }
    26. }

  • 相关阅读:
    python-立方和不等式
    中国水稻种子产业全景分析竞争格局 国稻种芯百团计划行动
    AI赋能的3D资产管理
    hivehook 表血缘与字段血缘的解析
    对象解构赋值的用法
    github配置ssh密钥
    Java19虚拟线程都来了,我正在写的线程代码会被淘汰掉吗?
    vue指令相关的问题
    字符串函数和内存函数(strlen,strcpy ,strcat ,strcmp,strstr,memcpy,memmove,memcmp,memset)
    vue组件精讲
  • 原文地址:https://blog.csdn.net/weixin_48426115/article/details/126267899