JDBC连接、操作数据库

时间:2022-09-12 15:16:10

PS:这仅仅是简单的连接,并没有太多实际的功能

//工具类

package com.etc.manager;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
 * 这是一个资源工具类
 * @author Administrator *
 */
public class DBUtil {   
    static
    //static静态代码块启动程序就会运行静态代码块
    //静态代码块加载数据库驱动
    {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


    /**
     * 获取数据库连接
     * */
    public static Connection getConnection()
    {
        Connection conn = null;
        try {
            //连接信息:数据库地址,用户名,密码
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/1219?characterEncoding=utf-8", "root", "123123");
            //System.out.println("连接成功");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return conn;
    }
    
    //关闭连接
    /**
     * 释放资源的方法,把传入的资源对象关闭释放。
     * */
    public static void closeAll(Connection conn,Statement st,ResultSet rs)
    {
        try {
            if(conn!=null)
            {
                conn.close();
            }
            if(st!=null)
            {
                st.close();
            }
            if(rs!=null)
            {
                rs.close();
            }
            
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

 

 

//验证登录类

package com.etc.manager;
 
import java.sql.Connection;
import java.sql.ResultSet;

import java.sql.PreparedStatement;

public class Account {
    /**
     * 根据用户名和密码访问数据库的admin表,来实现登录功能
     * @param userName
     * @param pwd
     * @return
     *
    public boolean userLogin(String userName,String password)
    {
        String sql ="select count(*) from admin where userName=? and password =?";
        //调用DBUtil工具类的getConnection方法获取数据库连接
        Connection conn = DBUtil.getConnection();
        PreparedStatement ps  =null;
        ResultSet re =null;
        int result = 0;
        try {
            //PreparedStatement对象预编译sql语句
            ps = conn.prepareStatement(sql);
            //给占位符赋值
            ps.setString(1, userName);
            ps.setString(2, password);
            //接受结果集
            re = ps.executeQuery();
            if(re.next())//判断是否还有下一条数据,当知道只会查询出一条数据的时候,就用if语句
            {
                //获取查询结果的第一列,sql的查询项就是count(*)就是第一列
                result = re.getInt(1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        finally
        {
            //调用DBUtil工具类的closeAll方法关闭连接
            DBUtil.closeAll(conn, ps,re);
        }
        //大于0则返回true
        return result>0;
        
    }
}

 

//学员管理类

package com.etc.manager;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
 

//学员管理类
/**
 * 学员管理类
 * */
public class StudentManager {
    Scanner input = new Scanner(System.in);

    // 增
    /**
     * 增加方法
     * */
    public void add() {
        // 调用工具类getConnection方法取得连接对象
        Connection conn = DBUtil.getConnection();
        PreparedStatement st = null;
        //String sql = "insert into student values(null,'李成江','男','13690236572','1993-6-8','中山市','liyunfei@126.com',1)";
        String sql = "insert into student values(?,?,?,?,?,?,?,?)";
        try {
            //预编译sql语句
            st = conn.prepareStatement(sql);
            //给占位符赋值
            st.setInt(1, 1);
            st.setString(2, "吴小丽");
            st.setString(3, "男");
            st.setString(4, "13290945698");
            st.setString(5, "1994-5-6");
            st.setString(6, "广州越秀区");
            st.setString(7, "wuxiaoli@126.com");
            st.setInt(8, 2);
            int row = st.executeUpdate();
            if (row > 0)
                System.out.println("添加学员信息成功");
            else
                System.out.println("添加学员信息失败");

        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            DBUtil.closeAll(conn, st, null);
        }
    }

    // 查询所有年级信息
    /**查看所有年级信息*/
    public void search() {
        String sql = "select * from student";
        Connection conn = DBUtil.getConnection();
        Statement st = null; // 命令对象
        ResultSet rs = null; // 结果集
        try {
            st = conn.createStatement();
            // 查询指令调用的方法,可以获取返回的结果集 :ResultSet
            rs = st.executeQuery(sql);
            // 如何从结果集中取数据 ....重点 采用循环的方式一行行的取,调用next()方法
            while (rs.next()) {
                // 如何取得每一行数据里面的值,根据 列名、索引两种方式取
                System.out.print(rs.getString(1) + "\t");
                System.out.print(rs.getString(2) + "\t");
                System.out.print(rs.getString(3) + "\t");
                System.out.print(rs.getString(4) + "\t");
                System.out.println(rs.getString(5) + "\t");
            }

        } catch (Exception e) {
            // TODO: handle exception


        } finally {
            //调用DBUtil工具类的closeAll方法关闭连接
            DBUtil.closeAll(conn, st, rs);
        }
    }
}

 

//主方法类

import java.util.Scanner;

import com.etc.manager.Account;
import com.etc.manager.StudentManager;


public class Test {
    /**
     * @param args
     */
    public static void main(String[] args) {
        StudentManager manager = new StudentManager();    
        Scanner input = new Scanner(System.in);
        System.out.print("请输入用户名:");
        String uname = input.nextLine();
        System.out.print("请输入密码:");
        String pwd = input.nextLine();
        //验证登陆类
        Account account = new Account();        
        //调用登录方法返回True表示登录成功。
        if(account.userLogin(uname, pwd)){
            //下面调用了StudentManager类下的add()方法和search()方法,一个是增加一行数据,一个是查询数据
            manager.add();
            manager.search();  
        }else {
            //返回false则表示登录失败
            System.out.println("用户名或密码错误..");
        }
    }

}