TE.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package com.sf.quanrizhi.day03;
  2. import com.alibaba.druid.pool.DruidDataSource;
  3. import com.alibaba.druid.pool.DruidDataSourceFactory;
  4. import com.alibaba.druid.pool.DruidPooledConnection;
  5. import org.junit.Test;
  6. import javax.sql.DataSource;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.sql.*;
  10. import java.util.Comparator;
  11. import java.util.Properties;
  12. public class TE {
  13. /**
  14. * PreparedStatement
  15. */
  16. @Test
  17. public void t1() throws ClassNotFoundException, SQLException {
  18. // 加载数据库的驱动
  19. Class.forName("com.mysql.jdbc.Driver");
  20. //创建数据库的连接
  21. Connection connection = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8", "root", "root");
  22. //创建PreparedStatement对象
  23. String sql = "insert into user(user_name,price,create_time) values (?,?,?)";
  24. PreparedStatement preparedStatement = connection.prepareStatement(sql);
  25. //⑤绑定参数(参数的下标从1开始而不是像数组或者集合从0开始)
  26. preparedStatement.setDouble(2,123.12);
  27. preparedStatement.setString(1,"lisa");
  28. preparedStatement.setDate(3,new Date(System.currentTimeMillis()));
  29. int row = preparedStatement.executeUpdate();
  30. System.out.println(row);
  31. }
  32. /**
  33. * 张三给李四转账500元
  34. */
  35. @Test
  36. public void t2(){
  37. Connection connection = null;
  38. //加载驱动
  39. try {
  40. Class.forName("com.mysql.jdbc.Driver");
  41. connection = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8", "root", "root");
  42. //取消默认提交方式
  43. connection.setAutoCommit(false);
  44. Statement statement = connection.createStatement();
  45. String sql1 = "UPDATE account SET money = money+500 WHERE account_name='z3'";
  46. String sql2 = "UPDATE account SET money = money-500 WHERE account_name='l4'";
  47. statement.executeUpdate(sql1);
  48. // 演示存在异常
  49. // int a = 1/0;
  50. statement.executeUpdate(sql2);
  51. //手动提交
  52. connection.commit();
  53. } catch (ClassNotFoundException | SQLException e) {
  54. if (connection != null) {
  55. try {
  56. connection.rollback();
  57. } catch (SQLException ex) {
  58. throw new RuntimeException(ex);
  59. }
  60. }
  61. }
  62. }
  63. @Test
  64. public void t3() throws ClassNotFoundException,SQLException{
  65. //执行批量处理
  66. Class.forName("com.mysql.jdbc.Driver");
  67. Connection connection = DriverManager.getConnection("jdbc:mysql:///jdbc?characterEncoding=utf-8", "root", "root");
  68. //取消默认提交方式
  69. connection.setAutoCommit(false);
  70. Statement statement = connection.createStatement();
  71. String sql1 = "UPDATE account SET money = money+500 WHERE account_name='z3'";
  72. String sql2 = "UPDATE account SET money = money-500 WHERE account_name='l4'";
  73. statement.addBatch(sql1);
  74. statement.addBatch(sql2);
  75. // 批量执行
  76. statement.executeBatch();
  77. connection.commit();
  78. }
  79. @Test
  80. public void t4() throws SQLException {
  81. //创建Druid的核心连接池对象DruidDataSource
  82. DruidDataSource ds = new DruidDataSource();
  83. //设置初始化参数
  84. ds.setUrl("jdbc:mysql:///jdbc?characterEncoding=utf-8");
  85. ds.setUsername("root");
  86. ds.setPassword("root");
  87. ds.setDriverClassName("com.mysql.jdbc.Driver");
  88. // 获取数据库的连接
  89. Connection connection = ds.getConnection();
  90. //预编译
  91. String sql = "INSERT INTO user(user_name,price,create_time) VALUES(?,?,?)";
  92. PreparedStatement preparedStatement = connection.prepareStatement(sql);
  93. // 动态绑定参数信息
  94. preparedStatement.setString(1,"litiantian");
  95. preparedStatement.setDouble(2,12.23);
  96. preparedStatement.setDate(3,new Date(System.currentTimeMillis()));
  97. int row = preparedStatement.executeUpdate();
  98. System.out.println(row);
  99. }
  100. /**
  101. * 通过获取文件信息的方式
  102. */
  103. @Test
  104. public void t5() throws Exception {
  105. InputStream inputStream = TE.class.getClassLoader().getResourceAsStream("db.properties");
  106. Properties properties = new Properties();
  107. properties.load(inputStream);
  108. //采用Druid提供的工厂类创建DruidDataSource对象
  109. DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
  110. // 获取数据库的连接
  111. Connection connection = dataSource.getConnection();
  112. String sql = "INSERT INTO user(user_name,price,create_time) VALUES(?,?,?)";
  113. PreparedStatement preparedStatement = connection.prepareStatement(sql);
  114. // 动态赋值
  115. preparedStatement.setString(1,"llovecoding");
  116. preparedStatement.setDouble(2,12.23);
  117. preparedStatement.setDate(3,new Date(System.currentTimeMillis()));
  118. int i = preparedStatement.executeUpdate();
  119. System.out.println(i);
  120. }
  121. }