赞
踩
目录
传送门:jdbc_demo
new Driver()是导包mysql驱动里面的。import com.mysql.jdbc.Driver;
不需要释放资源
Exception in thread "main" java.sql.SQLException: Before start of result set
取数据传入的参数写错了
- String url = "jdbc:mysql://localhost:3306/jdbc_demo";
- String url = "协议:子协议://主机:端口号 /数据库";
- package com.jcli;
-
- import com.mysql.jdbc.Driver;
-
- import java.sql.*;
-
- /**
- * 查询所有的用户, 输出到控制台
- * - 在java项目模块下,导入mysql驱动包
- * - 注册驱动
- * - 获得连接
- * - 创建执行sql语句对象
- * - 执行sql语句,处理结果
- * - 释放资源
- */
- public class Test01_select {
- public static void main(String[] args) throws SQLException {
- //- 在java项目模块下,导入mysql驱动包
- //- 注册驱动
- DriverManager.registerDriver(new Driver());//此处导包
- //- 获得连接
- String url = "jdbc:mysql://localhost:3306/jdbc_demo";
- String user = "root";
- String password = "root";
- Connection connection = DriverManager.getConnection(url, user, password);
- //- 创建执行sql语句对象
- Statement statement = connection.createStatement();
- //- 执行sql语句,处理结果
- String sql = "select * from user";
- ResultSet resultSet = statement.executeQuery(sql);
- // 游标下移,并且判断当前游标指向的行是否有记录(数据),如果有就返回true,否则返回false
- while (resultSet.next()) {
- //取数据
- System.out.println(resultSet.getObject("id"));
- System.out.println(resultSet.getObject("username"));
- System.out.println(resultSet.getObject("password"));
- System.out.println(resultSet.getObject("nickname"));
- System.out.println("-------------------------------------");
- }
- //- 释放资源
- resultSet.close();
- statement.close();
- connection.close();
- }
-
- }
防止null值
直接写驱动类名会自动生成路径,idea中
所以sql语句中属性用单引号是因为这样吗
- // 1.注册驱动
- // 2.获得连接
- // 3.创建sql语句执行体
- // 4.执行sql语句,处理结果
- // 5.释放资源
- package com.jcli.Test02_CRUD;
-
- import com.jcli.bean.User;
-
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.Statement;
- import java.util.ArrayList;
-
- /**
- * 查询所有用户信息
- */
- public class Test02_findAll {
- public static void main(String[] args) throws Exception {
- //1.注册驱动
- Class.forName("java.sql.Driver");
- //2.获得连接
- String url = "jdbc:mysql://localhost:3306/jdbc_demo";
- Connection connection = DriverManager.getConnection(url, "root", "root");
- // 3.创建sql语句执行对象
- Statement statement = connection.createStatement();
- // 4.执行sql语句,处理结果
- String sql = "select * from user";
- ResultSet resultSet = statement.executeQuery(sql);
- // 5.创建ArrayList集合,存储user对象
- ArrayList<User> list = new ArrayList<>();
- // 6.循环取数据
- while (resultSet.next()){
- // 7.取数据
- int id = resultSet.getInt("id");
- String username = resultSet.getString("username");
- String password = resultSet.getString("password");
- String nickname = resultSet.getString("nickname");
- // 8.创建user对象
- User user = new User();
- // 9.赋值
- user.setId(id);
- user.setUsername(username);
- user.setPassword(password);
- user.setNickname(nickname);
- // 10.把user对象添加到集合
- list.add(user);
- }
-
- // 11.释放资源
- resultSet.close();
- statement.close();
- connection.close();
- // 12.打印集合
- for (User user : list) {
- System.out.println(user);
- }
-
- }
- }
为啥会退出错误
- //静态代码块
- // 加载db.properties配置文件中的数据
- // 1.创建properties对象
- // 2.加载配置文件
- // 3.给成员变量赋值
- // 4.注册驱动
-
- //获得连接
-
- //释放资源
- //测试
- // 1.注册驱动,获得连接
- // 2.创建执行sql语句体
- // 3.执行sql语句,处理结果
- // 4.释放资源
查询所有
修改用户信息
在控制台输入用户名和密码,查询数据库,如果数据库存在当前用户,显示登录成功!
如果数据库不存在当前用户,显示登录失败!
就是用户输入账号密码去数据库查询,找到则登录成功
原因:因为sql语句是简单的字符串拼接,所以拼接后sql语句的格式可能会改变 解决方案:使用预编译sql语句对象,对sql语句进行预编译,从而固定sql语句的格式 setXXX(参数位置,参数的值)
- //- 用户输入用户名和密码
- //- 注册驱动,获得连接
- //- 创建执行sql语句对象
- //- 执行sql语句,处理结果(判断是否登录成功,其实就是判断User对象是否为null)
- //- 释放资源
- // 1.注册驱动,获得连接
- // 2.预编译sql语句,得到预编译对象
- // 3.为sql语句设置参数
- // 4.执行sql语句,数量结果
- // 5.释放资源
管理事务的功能类:Connection接口
开启事务:setAutoCommit(boolean autoCommit); 参数为false,则手动开启事务。
提交事务:commit();
回滚事务:rollback();
zs给ls转100, 使用事务进行控制
- //- 1.注册驱动,获得连接
- //- 2.开启事务
- //- 3.预编译sql语句,得到预编译对象
- //- 4.设置sql语句参数
- //- 5.执行sql语句,处理结果
- //- 6.提交事务或者回滚事务
- //- 7.释放资源
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。