intellij idea java项目中通过JDBC链接mysql

更新

/**
 * @author Marlon
 * @date 2018/2/1
 * 

* JDBC操作数据库的步骤 * 1.注册驱动 * 告知JVM使用的是哪一个数据库的驱动 * 2.获得连接 * 使用JDBC中的类,完成对MySQL数据库的连接 * 3.获得语句执行平台 * 通过连接对象获取对SQL语句的执行者对象 * 4.执行sql语句 * 使用执行者对象,向数据库执行SQL语句 * 获取到数据库的执行后的结果 * 5.处理结果 * 6.释放资源 一堆close() */ public class JDBCDemo { private static final String DRIVER = "com.mysql.jdbc.Driver"; //url: 数据库地址 jdbc:mysql://连接主机IP:端口号//数据库名字 private static final String URL = "jdbc:mysql://localhost:3306/day28"; private static final String USERNAME="root"; private static final String PASSWORD="root1234"; public static void main(String[] args) throws ClassNotFoundException, SQLException { //1.注册驱动 反射技术,将驱动类加入到内容 // 使用java.sql.DriverManager类静态方法 registerDriver(Driver driver) // Diver是一个接口,参数传递,MySQL驱动程序中的实现类 //DriverManager.registerDriver(new Driver()); //驱动类源代码,注册2次驱动程序 Class.forName(DRIVER); //2.获得数据库连接 DriverManager类中静态方法 //static Connection getConnection(String url, String user, String password) //返回值是Connection接口的实现类,在mysql驱动程序 //url: 数据库地址 jdbc:mysql://连接主机IP:端口号//数据库名字 Connection con = DriverManager.getConnection(URL, USERNAME, PASSWORD); //3.获得语句执行平台, 通过数据库连接对象,获取到SQL语句的执行者对象 // con对象调用方法 Statement createStatement() 获取Statement对象,将SQL语句发送到数据库 // 返回值是 Statement接口的实现类对象,,在mysql驱动程序 Statement stat = con.createStatement(); // 4.执行sql语句 // 通过执行者对象调用方法执行SQL语句,获取结果 // int executeUpdate(String sql) 执行数据库中的SQL语句, insert delete update // 返回值int,操作成功数据表多少行 int row = stat.executeUpdate ("INSERT INTO student(sname,sage,score,classroom) VALUES('小龙',28,99,'32期6班')"); System.out.println(row); //6.释放资源 一堆close() stat.close(); con.close(); }

查询

/*
 *  JDBC技术,查询数据表,获取结果集
 */
public class JDBCDemo1 {
    public static void main(String[] args) throws Exception{
        //1. 注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2. 获取连接对象
        String url = "jdbc:mysql://localhost:3306/mybase";
        String username="root";
        String password="123";
        Connection con = DriverManager.getConnection(url, username, password);
        //3 .获取执行SQL 语句对象
        Statement stat = con.createStatement();
        // 拼写查询的SQL
        String sql = "SELECT * FROM sort";
        //4. 调用执行者对象方法,执行SQL语句获取结果集
        // ResultSet executeQuery(String sql)  执行SQL语句中的select查询
        // 返回值ResultSet接口的实现类对象,实现类在mysql驱动中
        ResultSet rs = stat.executeQuery(sql);
        //5 .处理结果集
        // ResultSet接口方法 boolean next() 返回true,有结果集,返回false没有结果集
        while(rs.next()){
            //获取每列数据,使用是ResultSet接口的方法 getXX方法参数中,建议写String列名
            System.out.println(rs.getInt("sid")+"   "+rs.getString("sname")+
                    "   "+rs.getDouble("sprice")+"   "+rs.getString("sdesc"));
        }
        
        rs.close();
        stat.close();
        con.close();
    }
}

密码注入:

/*
 *  Java程序实现用户登录,用户名和密码,数据库检查
 *  演示被别人注入攻击
-- 登录查询
SELECT * FROM users WHERE username='dsfsdfd' AND PASSWORD='wrethiyu'1 
OR 1=1

SELECT * FROM users WHERE username='a' AND PASSWORD='1'OR'1=1'
 */
public class JDBCDemo2 {
    public static void main(String[] args)throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/mybase";
        String username = "root";
        String password = "123";
        Connection con = DriverManager.getConnection(url, username, password);
        Statement stat = con.createStatement();
        
        Scanner sc = new Scanner(System.in);
        String user = sc.nextLine();
        String pass = sc.nextLine();
        
        //执行SQL语句,数据表,查询用户名和密码,如果存在,登录成功,不存在登录失败
        String sql = "SELECT * FROM users WHERE username='"+user+"' AND PASSWORD='"+pass+"'";
        System.out.println(sql);
        ResultSet rs = stat.executeQuery(sql);
        while(rs.next()){
            System.out.println(rs.getString("username")+"   "+rs.getString("password"));
        }
        
        rs.close();
        stat.close();
        con.close();
    }
}

防止注入攻击

/*
 *  Java程序实现用户登录,用户名和密码,数据库检查
 *  防止注入攻击
 *  Statement接口实现类,作用执行SQL语句,返回结果集
 *  有一个子接口PreparedStatement  (SQL预编译存储,多次高效的执行SQL) 
 *  PreparedStatement的实现类数据库的驱动中,如何获取接口的实现类
 *  
 *  是Connection数据库连接对象的方法
 *  PreparedStatement prepareStatement(String sql) 
          
 */
public class JDBCDemo3 {
    public static void main(String[] args)throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/mybase";
        String username = "root";
        String password = "123";
        Connection con = DriverManager.getConnection(url, username, password);
        Scanner sc = new Scanner(System.in);
        String user = sc.nextLine();
        String pass = sc.nextLine();
        
        //执行SQL语句,数据表,查询用户名和密码,如果存在,登录成功,不存在登录失败
        String sql = "SELECT * FROM users WHERE username=? AND PASSWORD=?";
        //调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
        //方法中参数,SQL语句中的参数全部采用问号占位符
        PreparedStatement pst =  con.prepareStatement(sql);
        System.out.println(pst);
        //调用pst对象set方法,设置问号占位符上的参数
        pst.setObject(1, user);
        pst.setObject(2, pass);
        
        //调用方法,执行SQL,获取结果集
        ResultSet rs = pst.executeQuery();
        while(rs.next()){
            System.out.println(rs.getString("username")+"   "+rs.getString("password"));
        }
        
        rs.close();
        pst.close();
        con.close();
    }
}
/*
 *  使用PrepareStatement接口,实现数据表的更新操作
 */
public class JDBCDemo {
    public static void main(String[] args) throws Exception{
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/mybase";
        String username="root";
        String password="123";
        Connection con = DriverManager.getConnection(url, username, password);  
        
        //拼写修改的SQL语句,参数采用?占位
        String sql = "UPDATE sort SET sname=?,sprice=? WHERE sid=?";
        //调用数据库连接对象con的方法prepareStatement获取SQL语句的预编译对象
        PreparedStatement pst = con.prepareStatement(sql);
        //调用pst的方法setXXX设置?占位
        pst.setObject(1, "汽车美容");
        pst.setObject(2, 49988);
        pst.setObject(3, 7);
        //调用pst方法执行SQL语句
        pst.executeUpdate();
        
        pst.close();
        con.close();
    }
}
/*
 *  PrepareStatement接口实现数据表的查询操作
 */
public class JDBCDemo1 {
    public static void main(String[] args) throws Exception{
        Class.forName("com.mysql.jdbc.Driver");
        String url = "jdbc:mysql://localhost:3306/mybase";
        String username="root";
        String password="123";
        Connection con = DriverManager.getConnection(url, username, password);  
        
        String sql = "SELECT * FROM sort";
        
        PreparedStatement pst = con.prepareStatement(sql);
        
        //调用pst对象的方法,执行查询语句,Select
        ResultSet rs=pst.executeQuery();
        while(rs.next()){
            System.out.println(rs.getString("sid")+"  "+rs.getString("sname")+"  "+rs.getString("sprice")+"  "+rs.getString("sdesc"));
        }
        rs.close();
        pst.close();
        con.close();
    }
}

你可能感兴趣的:(intellij idea java项目中通过JDBC链接mysql)