//1、注册驱动 Class.forName("com.mysql.jdbc.Driver"); //现在可以不写 //2、连接 String url = "jdbc:mysql://127.0.0.1:3306/db1"; String username = "root"; String password = "123"; Connection connection = DriverManager.getConnection(url, username, password); //3、定义sql String sql = "update emp set salary = 2000 where id = 1"; //4、获取执行sql的对象 Statement stmt = connection.createStatement(); //5、执行sql int count = stmt.executeUpdate(sql); //受影响的行数 //6、处理结果 System.out.println(count); //7、释放资源 stmt.close(); connection.close();
DriverManager(驱动管理类)作用:
1、注册驱动
2、获取数据库连接
参数 1、url:连接路径 语法:jdbc:mysql//ip地址(域名):端口/数据库名?参数键值对1&参数键值对2
示例:jdbc:mysql//127.0.0.1:3306/db1
细节: 如果连接的是本机mysql服务器,并且mysql服务端口是3306,则url可以简写为jdbc:mysql///数据库名称?参数键值对
配置useSSL=false参数,禁用安全连接方式,解决警告提示。
2、user:用户名
3、password:密码
Connection(数据库连接对象)作用:
1、获取执行SQL对象
普通执行SQL对象 Statement createStatement();
预编译SQL的执行SQL对象 prepareStatement(sql);
执行存储过程的对象 CallableStatement prepareCall(sql);
2、管理事务
MySQL事务管理:
开启事务:begin/start transaction;
提交事务:commit;
回滚事务:rollback;
MySQL默认自动提交事务
JDBC事务管理:Connection接口中定义了3个对应的方法
开启事务:setAutoCommit(boolean autoCommit):true为自动提交事务;false为手动提交事务,即为开启事务
提交事务:commit()
回滚事务:rollback()
Statement作用: 执行SQL语句
int executeUpdate(sql):执行DML、DDL语句 返回值:(1)DML语句影响的行数
(2)DDL语句执行后,执行成功可能返回0
ResultSet executeQuery(sql):执行DQL语句 返回值:ResultSet结果集对象
ResultSet(结果集对象)作用:
封装了DQL查询语句的结果
获取查询结果:boolean next():(1)将光标从当前位置向前移动一行
(2)判断当前行为是否为有效行 ture:有效,有数据 false:无效,无数据
xxx getXXX(参数):获取数据 参数:int:列的编号从1开始,String:列的名称
使用步骤:
1、游标向下移动一行,并判断该行是否有数据:next()
2、获取数据getXxx(参数)
PreparedStatement作用:
预编译SQL语句并执行:预防SQL注入问题
SQL注入:SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。
1、获取preparedStatement对象
String sql = “select * from user where username = ? and password = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
2、设置参数 setXxx()
3、执行sql
数据库连接池 druid
//1、导入jar包 //2、定义配置文件 //3、加载配置文件 Properties prop = new Properties(); prop.load(new FileInputStream("jdbc-demo/src/druid.properties")); //4、获取连接池对象 DataSource dataSource = DruidDataSourceFactory.createDataSource(prop); //5、获取数据库连接 Connection Connection connection = dataSource.getConnection(); System.out.println(connection); // System.out.println(System.getProperty("user.dir")); //可以查看文件的路径
配置文件内容: