• JDBC(初步试用)


    1.先用jdbc操作数据库,心里想让数据库干什么,用jdbc解决,在我们面前的只有一条路,就是jdbc

    以前我们输入用户名密码进入数据库,进行查询,现在这个操作是这样完成的

    import java.sql.*;
    public class Connect {
        Connection conn; 
        Statement stmt;
        ResultSet rs;
        public Connect(String DB,String user,String password,String sql) throws SQLException {
        //加载驱动程序类
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        //获取连接类
        conn=DriverManager.getConnection(DB,user,password);
        //获取执行sql的对象
        stmt=conn.createStatement();
        //获取执行sql后的返回集
        rs=stmt.executeQuery(sql);
        //处理结果
        while(rs.next()) {
             System.out.print(rs.getObject(1));
    
        
        }
    //关闭连接(就像你打开数据库获得你想要的东西后就得关了它,以免占用资源) } }
    public class Test1 {
        public static void main(String [] agrs) throws SQLException {
            Connect c=new Connect("jdbc:mysql://localhost:3306/mydata","root","root","select * from emp");
            
        }
            
            
            
        
    
    }

    还可以show databases

    public class Test1 {
        public static void main(String [] agrs) throws SQLException {
            Connect c=new Connect("jdbc:mysql://localhost:3306/mydata","root","root","show databases");
            c.conn.close();
            
        }
            
            
            
        
    
    }

    等等jdbc都可以做到

    2.加载驱动程序可以用反射的机制

    Class.forName("com.mysql.jdbc.Driver");

    3.获取数据库的连接,可以用配置文件方式,也可以用url方式(注意配置文件需要放到根目录下)

    info=new Properties();
        info.setProperty("user", user);
        info.setProperty("password", password);
        conn=DriverManager.getConnection(DB, info);
    conn=DriverManager.getConnection(DB+'?'+"user="+user+'&'+"password="+password);

    4.statement

    5.结果集的处理

    还有get##(基本数据类型等)将数据库的类型与java的类型对应起来

    6.DBUtils

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ResourceBundle;
    
    public class DBUtils {
        
        private static String url;
        private static String user;
        private static String password;
        private static String sql;
        private static String driverclass;
        
        static {
            //注意配置文件需要放到根目录下,不然报错
            ResourceBundle rb =ResourceBundle.getBundle("jdbc");
            driverclass=rb.getString("driverclass");
            url=rb.getString("url");
            user=rb.getString("user");
            password=rb.getString("password");
            sql=rb.getString("sql");
            try {
                Class.forName(driverclass);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            
        }
        
    
        public static Connection getConnection() throws SQLException {
            return DriverManager.getConnection(url,user,password);
            
        }
        public static Statement getStatement(Connection connect) throws SQLException {
            return connect.createStatement();
            
        }
        //有结果集
        public static ResultSet getSqlQuery(Statement stmt) throws SQLException {
            return stmt.executeQuery(sql);
            
        }
        //没有结果集
        public static void getSqlUpadate(Statement stmt) throws SQLException {
            stmt.executeUpdate(sql);
        }
        //处理结果集
        public static void getResult(ResultSet rs) throws SQLException {
              //结果集怎么才能输出所有列
            while(rs.next())
            System.out.println(rs.getObject(1));
            
        }
        //关闭资源
        public static void closeAll(ResultSet rs,Statement stmt,Connection conn) {
            if(rs!=null) {
                  try{rs.close();
                  
                  }catch(Exception ee) {
                      
                  }
                  rs=null;
                }
                if(stmt!=null) {
                      try{stmt.close();
                      
                      }catch(Exception ee) {
                          
                      }
                      stmt=null;
                    }
                if(conn!=null) {
                      try{conn.close();
                      
                      }catch(Exception ee) {
                          
                      }
                      conn=null;
                    }
        }
        
    
    }
    driverclass=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/mydata
    user=root
    password=root
    sql=select  * from emp where empno = 9997
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class Test {
        public static void main(String[] agrs)  {
            Connection conn=null;
            Statement stmt=null;
            ResultSet rs=null;
            
            try {
                conn=DBUtils.getConnection();
                stmt=DBUtils.getStatement(conn);
                rs=DBUtils.getSqlQuery(stmt);
                DBUtils.getResult(rs);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("ha");
            }finally {
                DBUtils.closeAll(rs, stmt, conn);
            }
            
            
        }
    
        
    
    }

     7.多个功能一起写

    当多个功能一起写时,你会发现程序的好坏由这几个部分构成(界面,在控制台提示你输入什么,或者在控制台显示操作之后的结果数据;逻辑控制,当你输入什么时操作哪个部分,当你输入成功时又该操作哪部分,是怎么跟用户交互将这种逻辑体现出来;获取控制台输入的对象;与数据库的连接,结果集的处理)

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] agrs)  {
            //这种控制总体架构的叫做什么,来规划各个模块的位置.这种控制也需要调代码优化的
            Connection coon;
            PreparedStatement stmt;
            ResultSet rs;
            while(true) {
                System.out.println("请输入登录,注册,查询商品的d,z,c其中一个:");
                Scanner sc =new Scanner(System.in);
                char s=sc.nextLine().charAt(0);
            switch(s) {
            case 'd':
                //输入界面和获取数据这部分也有调优
                int  i=1;
                while(i==1)
                {
                User u=new User();
                User u2=new User();
                System.out.println("请输入用户名:");
                String c1=sc.nextLine();
                System.out.println("请输入密码:");
                String c2=sc.nextLine();
                u.setName(c1);
                u.setPassword(c2);
                //连接数据库部分(分为连接部分,sql部分,逻辑控制部分,显示部分)
                try {
                    coon=DBUtils.getConnection();
                    String sql="select * from User where name=? and password=?";
                    stmt=coon.prepareStatement(sql);
                    stmt.setString(1, u.getName());
                    stmt.setString(2, u.getPassword());
                    rs=stmt.executeQuery();
                    //处理结果集
                    while(rs.next()) {
                        u2.setName(rs.getString(1));
                        u2.setPassword(rs.getString(2));
                    }
                //判断是否相等(这也是一部分值得完善的代码)
                if(u2.getName()!=null&&u2.getPassword()!=null) {
                    System.out.println("登录成功");
                    i=0;
                }else {
                    System.out.println("登录失败");
                    System.out.println("请输入重新登录还是退出:0退出,1重新登录");
                    String c3=sc.nextLine();
                     i=Integer.parseInt(c3);
                    
                }
                    
                    
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                }
                
                break;
                
            case 'z':
                //这里跟上面一样,都是在控制台输入数据,返回一个对象,做一个获取user对象的类
                int i2=1;
                while(i2==1) {
                User u=new User();
                GetUser getuser=new GetUser();
                u=getuser.getUser();
                //与数据库的连接部分
                try {
                    coon=DBUtils.getConnection();
                    String sql="insert into User values (?,?)";
                    stmt=coon.prepareStatement(sql);
                    stmt.setString(1, u.getName());
                    stmt.setString(2, u.getPassword());
                    //检查模块
                    if(!stmt.execute()) {//这里值的完善,因为可能出现重名等判断,还有密码等
                        //成功与否的方法
                        System.out.println("注册成功,欢迎"+u.getName());
                        i2=0;
                    }else {//这里没有注册成功的代码跟上一个差不多
                        System.out.println("注册失败");
                        System.out.println("请输入重新注册还是退出:0退出,1重新登录");
                        String c3=sc.nextLine();
                         i2=Integer.parseInt(c3);
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                }
                
                
                break;
            case 'c':
                User u2=new User();
                User u=new User();
                try {
                    coon=DBUtils.getConnection();
                    //查询这部分就更复杂了,因为有多种查询情况
                    System.out.println("请选择你要查询的样子:0根据一个user名来查询,1根据多个user名来查询");
                    Scanner sc2 =new Scanner(System.in);
                    int m=Integer.parseInt(sc2.nextLine());
                    if(m==0) {
                        System.out.println("请输入你要查询的名字");
                        String ss=sc2.nextLine();
                    String sql="select * from User where name=? ";
                    stmt=coon.prepareStatement(sql);
                    stmt.setString(1, ss);
                    rs=stmt.executeQuery();
                    while(rs.next()) {
                        u2.setName(rs.getString(1));
                        u2.setPassword(rs.getString(2));
                    }
                    if(u2.getName()!=null) {
                    System.out.println(u2.getName());
                    System.out.println(u2.getPassword());
                    }else {
                        System.out.println("没有");
                    }
                    
                    }else {
                        System.out.println("请输入你要查询的第一个名字");
                        String ss=sc2.nextLine();
                        System.out.println("请输入你要查询的第二个名字");
                        String ss2=sc2.nextLine();
                        String sql="select * from User where use=? and ? ";
                        stmt=coon.prepareStatement(sql);
                        stmt.setString(1, ss);
                        stmt.setString(2, ss2);
                        rs=stmt.executeQuery();
                        //这里就需要定义一个list来存储多个对象(先不写)
                        while(rs.next()) {
                            System.out.println(rs.getString(1));
                            System.out.println(rs.getString(2));
                        }
                        
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            
                break;
                default:
                    System.out.println("输入不合法");
            }
            }
        }
    
    }
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ResourceBundle;
    
    public class DBUtils {
        
        private static String url;
        private static String password;
        private static String driverclass;
        private static String user;
        static {
            ResourceBundle rb =ResourceBundle.getBundle("jdbc");
            driverclass=rb.getString("driverclass");
            url=rb.getString("url");
            user=rb.getString("user");
            password=rb.getString("password");
            try {
                Class.forName(driverclass);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        public static Connection getConnection() throws SQLException {
            return DriverManager.getConnection(url,user,password);
        }
        public static void closeAll(ResultSet rs,Statement stmt,Connection conn) {
            if(rs!=null) {
                  try{rs.close();
                  
                  }catch(Exception ee) {
                      
                  }
                  rs=null;
                }
                if(stmt!=null) {
                      try{stmt.close();
                      
                      }catch(Exception ee) {
                          
                      }
                      stmt=null;
                    }
                if(conn!=null) {
                      try{conn.close();
                      
                      }catch(Exception ee) {
                          
                      }
                      conn=null;
                    }
        }
        
    
    }
    public class GetUser {
        User u;
        public User getUser() {
            Scanner sc =new Scanner(System.in);
            System.out.println("请输入用户名:");
            String c1=sc.nextLine();
            System.out.println("请输入密码:");
            String c2=sc.nextLine();
            u=new User();
            u.setName(c1);
            u.setPassword(c2);
            return u;
        }
    
    }
    public class User {
        public String name;
        public String password;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
    
    }

     8.进一步封装

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ResourceBundle;
    
    public class DBUtils {
        
        private static String url;
        private static String password;
        private static String driverclass;
        private static String user;
        static {
            ResourceBundle rb =ResourceBundle.getBundle("jdbc");
            driverclass=rb.getString("driverclass");
            url=rb.getString("url");
            user=rb.getString("user");
            password=rb.getString("password");
            try {
                Class.forName(driverclass);
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        public static Connection getConnection() throws SQLException {
            return DriverManager.getConnection(url,user,password);
        }
        public static void closeAll(ResultSet rs,Statement stmt,Connection conn) {
            if(rs!=null) {
                  try{rs.close();
                  
                  }catch(Exception ee) {
                      
                  }
                  rs=null;
                }
                if(stmt!=null) {
                      try{stmt.close();
                      
                      }catch(Exception ee) {
                          
                      }
                      stmt=null;
                    }
                if(conn!=null) {
                      try{conn.close();
                      
                      }catch(Exception ee) {
                          
                      }
                      conn=null;
                    }
        }
        
    
    }
    import java.util.Scanner;
    
    public class GetUser {
        User u;
        public User getUser() {
            Scanner sc =new Scanner(System.in);
            System.out.println("请输入用户名:");
            String c1=sc.nextLine();
            System.out.println("请输入密码:");
            String c2=sc.nextLine();
            u=new User();
            u.setName(c1);
            u.setPassword(c2);
            return u;
        }
    
    }
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class CRUD {
        Connection coon;
        PreparedStatement stmt;
        ResultSet rs;
        User u2;
        public User select (User u) {
            try {
                coon=DBUtils.getConnection();
                String sql="select * from User where name=? and password=?";
                stmt=coon.prepareStatement(sql);
                stmt.setString(1, u.getName());
                stmt.setString(2, u.getPassword());
                rs=stmt.executeQuery();
                //处理结果集
                while(rs.next()) {
                    u2=new User();
                    u2.setName(rs.getString(1));
                    u2.setPassword(rs.getString(2));
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally {
                DBUtils.closeAll(rs, stmt, coon);
            }
            
            return u2;
        
        }
        public boolean create(User u) {
            try {
                coon=DBUtils.getConnection();
                String sql="insert into User values (?,?)";
                stmt=coon.prepareStatement(sql);
                stmt.setString(1, u.getName());
                stmt.setString(2, u.getPassword());//
                boolean i=stmt.execute();
                return i;
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return false;
            }finally {
                DBUtils.closeAll(rs, stmt, coon);
            }
            
            
    
        }
        public User select2(String ss) {
            try {
                coon=DBUtils.getConnection();
                String sql="select * from User where name=? ";
                stmt=coon.prepareStatement(sql);
                stmt.setString(1, ss);
                
                rs=stmt.executeQuery();
                //处理结果集
                while(rs.next()) {
                    u2=new User();
                    u2.setName(rs.getString(1));
                    u2.setPassword(rs.getString(2));
                }
                return u2;
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                return null;
            }finally {
                DBUtils.closeAll(rs, stmt, coon);
            }
            
        }
        public void select2(String ss,String ss2) {
            try {
                coon=DBUtils.getConnection();
                String sql="select * from User where use=? and ? ";
                stmt=coon.prepareStatement(sql);
                stmt.setString(1, ss);
                stmt.setString(2, ss2);
                rs=stmt.executeQuery();
                while(rs.next()) {
                    System.out.println(rs.getString(1));
                    System.out.println(rs.getString(2));
                }
                
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                
            }finally {
                DBUtils.closeAll(rs, stmt, coon);
            }
        }
    
    }
    public class User {
        public String name;
        public String password;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
    
    }
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] agrs)  {
            //这种控制总体架构的叫做什么,来规划各个模块的位置.这种控制也需要调代码优化的
            Connection coon;
            PreparedStatement stmt;
            ResultSet rs;
            while(true) {
                System.out.println("请输入登录,注册,查询商品的d,z,c其中一个:");
                Scanner sc =new Scanner(System.in);
                char s=sc.nextLine().charAt(0);
            switch(s) {
            case 'd':
                //输入界面和获取数据这部分也有调优
                int  i=1;
                while(i==1)
                {
                User u=new User();
                User u2=new User();
                System.out.println("请输入用户名:");
                String c1=sc.nextLine();
                System.out.println("请输入密码:");
                String c2=sc.nextLine();
                u.setName(c1);
                u.setPassword(c2);
                
                
                CRUD R=new CRUD();
                u2=R.select(u);
                //判断是否相等(这也是一部分值得完善的代码)
                if(u2.getName()!=null&&u2.getPassword()!=null) {
                    System.out.println("登录成功");
                    i=0;
                }else {
                    System.out.println("登录失败");
                    System.out.println("请输入重新登录还是退出:0退出,1重新登录");
                    String c3=sc.nextLine();
                     i=Integer.parseInt(c3);
                    
                }
                    
                    
                
                }
                
                break;
                
            case 'z':
                //这里跟上面一样,都是在控制台输入数据,返回一个对象,做一个获取user对象的类
                int i2=1;
                while(i2==1) {
                User u=new User();
                GetUser getuser=new GetUser();
                u=getuser.getUser();
                //与数据库的连接部分
                CRUD C=new CRUD();
               if(! C.create(u)) {//这里值的完善,因为可能出现重名等判断,还有密码等
                        //成功与否的方法
                        System.out.println("注册成功,欢迎"+u.getName());
                        i2=0;
                    }else {//这里没有注册成功的代码跟上一个差不多
                        System.out.println("注册失败");
                        System.out.println("请输入重新注册还是退出:0退出,1重新登录");
                        String c3=sc.nextLine();
                         i2=Integer.parseInt(c3);
                    }
            
                }
                
                
                break;
            case 'c':
                User u2=new User();
            
        
                    //查询这部分就更复杂了,因为有多种查询情况
                    System.out.println("请选择你要查询的样子:0根据一个user名来查询,1根据多个user名来查询");
                    Scanner sc2 =new Scanner(System.in);
                    int m=Integer.parseInt(sc2.nextLine());
                    if(m==0) {
                    System.out.println("请输入你要查询的名字");
                    String ss=sc2.nextLine();
                    CRUD r=new CRUD();
                    u2=r.select2(ss);
                    if(u2!=null) {
                    System.out.println(u2.getName());
                    System.out.println(u2.getPassword());
                    }else System.out.println("没有");
                    
                    
                    }else {
                        System.out.println("请输入你要查询的第一个名字");
                        String ss=sc2.nextLine();
                        System.out.println("请输入你要查询的第二个名字");
                        String ss2=sc2.nextLine();
                         CRUD rr=new CRUD();
                         rr.select2(ss, ss2);
                        
                    }
                
            
                break;
                default:
                    System.out.println("输入不合法");
            }
            }
        }
    
    }

    9.标准的代码

    http://blog.csdn.net/songdeitao/article/details/17484635 (别人写的)

  • 相关阅读:
    Mediawiki 子页链接无效的问题
    变量存储区:堆和栈
    《modern-php》
    HttpApplication处理对象与HttpModule处理模块
    Asp.Net构架(Http请求处理流程)
    Quartz.NET 3.0
    WebApi路由
    RESTful架构
    WCF
    TCP/IP协议
  • 原文地址:https://www.cnblogs.com/S-Mustard/p/7712061.html
Copyright © 2020-2023  润新知