zoukankan      html  css  js  c++  java
  • JDBC

     

     

            Connection conn=DriverManager.getConnection(url,user,password);  //上面那句写错了

     

     

     

     

     conn和stmt的声明要写在try的外面

    第四步中的Sql查询语句怎么写?

     

     

     

    import java.sql.*;
    
    public class JDBCTest {
        public static void main(String[] args) {
            Statement stmt=null;
            Connection conn=null;
            ResultSet rs=null;
            try {
                //1.注册驱动
    //            Driver driver=new com.mysql.cj.jdbc.Driver();     //注册驱动方式一
    //            DriverManager.registerDriver(driver);
                Class.forName("com.mysql.cj.jdbc.Driver");          //注册驱动方式二
                //2.数据库连接
                String url="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useSSL=false";
                String user="root";
                String pwd="1234";
                conn=DriverManager.getConnection(url,user,pwd);
                //3.获取数据库操作对象
                stmt=conn.createStatement();
                //4.执行sql语句
                String sql="select * from user";
                rs=stmt.executeQuery(sql);
                //5.对查询结果进行处理
                while(rs.next()){
                    String username=rs.getString("username");
                    String sex=rs.getString("sex");
                    System.out.println(username+","+sex);
                }
            } catch (ClassNotFoundException | SQLException e) {
                e.printStackTrace();
            } finally {
                //6.释放资源
                if(rs!=null){
                    try {
                        rs.close();
                    }
                    catch (SQLException e){
                        e.printStackTrace();
                    }
                }
                if(stmt!=null){
                    try {
                        stmt.close();
                    }
                    catch (SQLException e){
                        e.printStackTrace();
                    }
                }
                if(conn!=null){
                    try {
                        conn.close();
                    }
                    catch (SQLException e){
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    使用配置文件来连接数据库,先创建一个db.properties配置文件,里面输入driver、user、pwd、url等信息

    如图:

    然后使用ResourceBundle读取配置文件中的信息

    import java.sql.*;
    import java.util.ResourceBundle;
    
    public class JDBCTest {
        public static void main(String[] args) {
            ResourceBundle bundle=ResourceBundle.getBundle("resources/db");
            String driver=bundle.getString("driver");
            String url=bundle.getString("url");
            String user=bundle.getString("user");
            String pwd=bundle.getString("pwd");
            Statement stmt=null;
            Connection conn=null;
            ResultSet rs=null;
            try {
                //1.注册驱动
    //            Driver driver=new com.mysql.cj.jdbc.Driver();     //注册驱动方式一
    //            DriverManager.registerDriver(driver);
                Class.forName(driver);          //注册驱动方式二
                //2.数据库连接
    //            String url="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useSSL=false";
    //            String user="root";
    //            String pwd="1234";
                conn=DriverManager.getConnection(url,user,pwd);
                //3.获取数据库操作对象
                stmt=conn.createStatement();
                //4.执行sql语句
                String sql="select * from user";
                rs=stmt.executeQuery(sql);
                //5.对查询结果进行处理
                while(rs.next()){
                    String username=rs.getString("username");
                    String sex=rs.getString("sex");
                    System.out.println(username+","+sex);
                }
            } catch (ClassNotFoundException | SQLException e) {
                e.printStackTrace();
            } finally {
                //6.释放资源
                if(rs!=null){
                    try {
                        rs.close();
                    }
                    catch (SQLException e){
                        e.printStackTrace();
                    }
                }
                if(stmt!=null){
                    try {
                        stmt.close();
                    }
                    catch (SQLException e){
                        e.printStackTrace();
                    }
                }
                if(conn!=null){
                    try {
                        conn.close();
                    }
                    catch (SQLException e){
                        e.printStackTrace();
                    }
                }
            }
        }
    }

     

    ////运用PreparedStatement解决sql注入问题
    import java.sql.*;
    import java.util.ResourceBundle;
    
    public class JDBCTest {
        public static void main(String[] args) {
            ResourceBundle bundle=ResourceBundle.getBundle("resources/db");
            String driver=bundle.getString("driver");
            String url=bundle.getString("url");
            String user=bundle.getString("user");
            String pwd=bundle.getString("pwd");
            PreparedStatement stmt=null;
            Connection conn=null;
            ResultSet rs=null;
            try {
                //1.注册驱动
    //            Driver driver=new com.mysql.cj.jdbc.Driver();     //注册驱动方式一
    //            DriverManager.registerDriver(driver);
                Class.forName(driver);          //注册驱动方式二
                //2.数据库连接
    //            String url="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8&useSSL=false";
    //            String user="root";
    //            String pwd="1234";
                conn=DriverManager.getConnection(url,user,pwd);
                //3.获取数据库操作对象
                //?表示占位符,一个占位符只能接收一个值/数据
                String sql="select * from user where username=?";   //主义?不要加单引号
                stmt=conn.prepareStatement(sql); //此时会发送sql给DBMS,进行sql语句编译
                //给占位符?传值,JDBC中所有下标都是从1开始
                //怎么解决sql注入的?在往sql语句中传递参数 的时候,sql语句以及被编译过了
                stmt.setString(1,"小二王");    //第一个参数表示占位符的序号(从1开始),第二个是实参
                // 4.执行sql语句,此时执行的时候不需要传入sql语句了
                rs=stmt.executeQuery();
                //5.对查询结果进行处理
                while(rs.next()){
                    String username=rs.getString("username");
                    String sex=rs.getString("sex");
                    System.out.println(username+","+sex);
                }
            } catch (ClassNotFoundException | SQLException e) {
                e.printStackTrace();
            } finally {
                //6.释放资源
                if(rs!=null){
                    try {
                        rs.close();
                    }
                    catch (SQLException e){
                        e.printStackTrace();
                    }
                }
                if(stmt!=null){
                    try {
                        stmt.close();
                    }
                    catch (SQLException e){
                        e.printStackTrace();
                    }
                }
                if(conn!=null){
                    try {
                        conn.close();
                    }
                    catch (SQLException e){
                        e.printStackTrace();
                    }
                }
            }
        }
    }
  • 相关阅读:
    采用重写tostring方法使ComboBox显示对象属性
    JavaScript中正则表达式test()、exec()、match() 方法
    高级软件工程实践总结作业
    用户使用调查报告
    Beta阶段置顶集合
    Beta冲刺阶段总结随笔
    Beta冲刺Day7
    Beta冲刺Day6
    Beta冲刺Day5
    Beta冲刺Day4
  • 原文地址:https://www.cnblogs.com/foodie-nils/p/14236360.html
Copyright © 2011-2022 走看看