[关闭]
@wangzhuanyun 2022-02-18T05:59:42.000000Z 字数 3053 阅读 3365

JDBC连接数据库(day1)

web


准备jar
mysql-connector-java-5.1.0-bin.jar

  • 加载驱动Class.forName("com.mysql.jdbc.Driver");
  • 使用DriverManager获取数据库connection连接
  • 创建Statement对象 用于执行SQL语句
  • 执行SQL语句
  • 释放资源
  1. Connection conn = null;
  2. Statement stat = null;
  3. try {
  4. //加载驱动 方言
  5. Class.forName("com.mysql.jdbc.Driver");
  6. //准备数据库连接路径
  7. String url = "jdbc:mysql://127.0.0.1:3306/xxshop";
  8. //用户名与密码
  9. String username = "root";
  10. String userpwd = "root";
  11. //根据路径,用户名,密码 使用DriverManager获取数据库connection连接
  12. conn = DriverManager.getConnection(
  13. url,username,userpwd);
  14. //准备要执行的SQL语句
  15. String sql= "select user_id,user_name from sf_user";
  16. //创建Statement对象 用于执行SQL语句
  17. stat = conn.createStatement();
  18. //执行SQL语句
  19. ResultSet rs = stat.executeQuery(sql);
  20. //处理ResultSet结果集
  21. //rs.next() 返回boolean
  22. while(rs.next()){
  23. Long user_id = rs.getLong(1);
  24. String user_name = rs.getString(2);
  25. System.out.println("用户ID:"+user_id);
  26. System.out.println("用户名:"+user_name);
  27. }
  28. } catch (Exception e) {
  29. e.printStackTrace();
  30. } finally {
  31. //释放资源
  32. try {
  33. stat.close();
  34. conn.close();
  35. } catch (SQLException e) {
  36. e.printStackTrace();
  37. }
  38. }

数据库驱动

com.microsoft.jdbc.sqlserver.SQLServerDriver(SQL Server)
com.mysql.jdbc.Driver(MySql)
oracle.jdbc.driver.OracleDriver(Oracle)

Statement常用对象
ResultSet executeQuery(sql)

执行sql查询语句,并返回ResultSet对象

int executeUpdate(sql)

执行insert,update,delete语句,返回受影响行数

boolean execute(sql)

执行insert,update,delete语句,返回true或false false成功

防止数据库乱码及日期出错
放入url连接路径之后
?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull

PreparedStatement对象使用
防止SQL注入,使用占位符“?”方式进行SQL拼接

使用PreparedStatement对象进行用户登录

  1. /**
  2. * 定义登录方法(传入用户输入的用户名与密码)
  3. */
  4. public User loginUser(String user_name,String user_pwd){
  5. Connection conn = null;
  6. PreparedStatement ps = null;
  7. try {
  8. //加载驱动 方言
  9. Class.forName("com.mysql.jdbc.Driver");
  10. //准备数据库连接路径
  11. String url = "jdbc:mysql://127.0.0.1:3306/xxshop?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull";
  12. //用户名与密码
  13. String username = "root";
  14. String userpwd = "root";
  15. //获取Connection对象
  16. conn = DriverManager.getConnection(
  17. url,username,userpwd);
  18. //准备登录SQL语句 使用占位符?代表参数
  19. String sql ="select user_id,user_name from sf_user where user_name=? and user_password=?";
  20. //预编译SQL语句
  21. ps = conn.prepareStatement(sql);
  22. //ps.setXXXX(位置<从1开始>,值<参数>)
  23. ps.setString(1,user_name);
  24. ps.setString(2,user_pwd);
  25. //执行查询
  26. ResultSet rs = ps.executeQuery();
  27. //用于判断 等于null登录失败,否则成功
  28. User user = null;
  29. while(rs.next()){
  30. //进入循环,登录成功,创建user对象
  31. user = new User();
  32. //使用rs.getXXX("返回的列名") 放入user对象
  33. user.setUser_id(rs.getLong("user_id"));
  34. user.setUser_name(rs.getString("user_name"));
  35. }
  36. return user;//返回用户登录对象
  37. } catch (Exception e) {
  38. e.printStackTrace();
  39. } finally {
  40. //释放资源
  41. try {
  42. ps.close();
  43. conn.close();
  44. } catch (SQLException e) {
  45. e.printStackTrace();
  46. }
  47. }
  48. return null;
  49. }

返回List集合核心代码

  1. List<Goods> goodsList = new ArrayList<Goods>();
  2. while(rs.next()){
  3. Goods goods = new Goods();
  4. goods.setGoods_id(rs.getLong("goods_id"));
  5. goods.setGoods_title(rs.getString("goods_title"));
  6. goods.setGoods_introduce(rs.getString("goods_introduce"));
  7. goodsList.add(goods);
  8. }
  9. return goodsList;

修改商品信息核心代码 对象入参

  1. String sql = "update sf_goods set goods_title=?," +
  2. "goods_browse=?,goods_state=? where goods_id=?";
  3. ps = conn.prepareStatement(sql);
  4. ps.setString(1,goods.getGoods_title());
  5. ps.setInt(2,goods.getGoods_browse());
  6. ps.setInt(3,goods.getGoods_state());
  7. ps.setLong(4,goods.getGoods_id());
  8. int i = ps.executeUpdate();
  9. return i;
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注