package com.xiangxiang.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

//jdbc快速入门
public class JDBCDemo {
    public static void main(String[] args) throws Exception {

        //1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接
        String url="jdbc:mysql://localhost:3306/db1";
        String username="root";
        String password="11111111";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3.定义sql语句
        String sql="update tb_user set gender = '女' ";

        //4.获取执行sql的对象
        Statement stat =conn.createStatement();
        //5.执行sql
        int count = stat.executeUpdate(sql);//受影响的行数
        //6.处理结果
        System.out.println(count);
        //7.释放资源
        stat.close();
        conn.close();
    }
}
-------------------------------------------------------------
package com.xiangxiang.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCDemo2 {
    public static void main(String[] args) throws Exception {

       // 开启事务实例:

        //1.注册驱动
        //Class.forName("com.mysql.jdbc.Driver");会默认注册驱动导入jar包后
        //2.获取连接
        String url="jdbc:mysql://localhost:3306/db1";
        //如果是链接本地MySQL且端口号是默认的3306,可以简写为: String url="jdbc:mysql:///db1";
        String username="root";
        String password="11111111";
        Connection conn = DriverManager.getConnection(url, username, password);
        //3.定义sql语句
        String sql1="update tb_user set gender = '男' where id = 1 ";

        String sql2="update tb_user set gender = '双' where id = 2 ";
        //4.获取执行sql的对象
        Statement stat =conn.createStatement();

        try {
            //开启事务
            conn.setAutoCommit(false);
            //5.执行sql
            int count1 = stat.executeUpdate(sql1);//受影响的行数
            System.out.println(count1);

            int count2 = stat.executeUpdate(sql2);//受影响的行数
            System.out.println(count2);

            //提交事务
            conn.commit();
        } catch (Exception e) {
            //回滚事务
            conn.rollback();

            throw new RuntimeException(e);
        }
        //7.释放资源
        stat.close();
        conn.close();
    }
}
----------------------------------------------
package com.xiangxiang.jdbc;

import java.sql.*;

public class JDBCDemo3_ResultSet {
    public static void main(String[] args) throws Exception {

        //ResultSet:


        String url="jdbc:mysql://localhost:3306/db1";
        //如果是链接本地MySQL且端口号是默认的3306,可以简写为: String url="jdbc:mysql:///db1";
        String username="root";
        String password="11111111";
        Connection conn = DriverManager.getConnection(url, username, password);

        String sql="select * from tb_user";

        Statement stat=conn.createStatement();

        //执行
        ResultSet rs=stat.executeQuery(sql);

        //处理
        while(rs.next()){
            int id=rs.getInt("id");//也可以用 rs.getInt(1);
            String name=rs.getString("username");//也可以用 rs.getString(2);
            String pass=rs.getString("password");//...
            String gender=rs.getString("gender");
            String addr=rs.getString("addr");
            
            System.out.println(id+" "+name+" "+pass+" "+gender+" "+addr);
        }
        //释放资源
        rs.close();
        stat.close();
        conn.close();
    }
}
-----------------------------------------------------
package com.xiangxiang.jdbc;

import com.xiangxiang.pojo.Account;

import java.sql.*;
import java.util.ArrayList;

public class JDBCDemo3_ResultSet_lianxi {
    public static void main(String[] args) throws SQLException {
        //要求:查询account数据,封装为Account对象,并存储到ArrayList集合中


        String url="jdbc:mysql://localhost:3306/db1";
        //如果是链接本地MySQL且端口号是默认的3306,可以简写为: String url="jdbc:mysql:///db1";
        String username="root";
        String password="11111111";
        Connection conn = DriverManager.getConnection(url, username, password);

        String sql="select * from tb_user";

        Statement stat=conn.createStatement();

        //执行
        ResultSet rs=stat.executeQuery(sql);

        ArrayList<Account> list=new ArrayList<>();
        //处理
        while(rs.next()){
            Account account=new Account();
            int id=rs.getInt("id");//也可以用 rs.getInt(1);
            String name=rs.getString("username");//也可以用 rs.getString(2);
            String pass=rs.getString("password");//...
            String gender=rs.getString("gender");
            String addr=rs.getString("addr");

            account.setId(id);
            account.setUsername(name);
            account.setPassword(pass);
            account.setGender(gender);
            account.setAddr(addr);

            list.add(account);
        }
        System.out.println(list);
        //释放资源
        rs.close();
        stat.close();
        conn.close();
    }
}
--------------------------------------------------
package com.xiangxiang.jdbc;

import java.sql.*;

public class JDBCDemo3_User_Login {
    public static void main(String[] args) throws SQLException {
        String url="jdbc:mysql://localhost:3306/db1";
        //如果是链接本地MySQL且端口号是默认的3306,可以简写为: String url="jdbc:mysql:///db1";
        String username="root";
        String password="11111111";
        Connection conn = DriverManager.getConnection(url, username, password);

        String name="zhangsan";
        String pass="123";
        String sql="select * from tb_user where username = '"+name+"' and password = '"+pass+"' ";

        Statement stat=conn.createStatement();

        //执行
        ResultSet rs = stat.executeQuery(sql);

        //处理
        if(rs.next()) System.out.println("登录成功");
        else System.out.println("登录失败");
        //释放资源
        rs.close();
        stat.close();
        conn.close();
    }
}
--------------------------------------
package com.xiangxiang.jdbc;

import java.sql.*;

public class JDBCDemo3_PreparedStatement {
    public static void main(String[] args) throws Exception {
        //PreparedStatement:防止sql注入

        String url="jdbc:mysql://localhost:3306/db1";
        //如果是链接本地MySQL且端口号是默认的3306,可以简写为: String url="jdbc:mysql:///db1";
        String username="root";
        String password="11111111";
        Connection conn = DriverManager.getConnection(url, username, password);

        String name="zhangsan";
        String pass="123";
        String sql="select * from tb_user where username = ? and password = ? ";

        PreparedStatement ps = conn.prepareStatement(sql);

        //设置问号得值
        ps.setString(1,name);
        ps.setString(2,pass);

        //执行
        ResultSet rs = ps.executeQuery();//不传sql语句

        //处理
        if(rs.next()) System.out.println("登录成功");
        else System.out.println("登录失败");
        //释放资源
        rs.close();
        ps.close();
        conn.close();
    }
}