实习第一天:JDBC

实习第一天:JDBC

准备工作

找到并下载与MySQL版本匹配的驱动包
我是在https://mvnrepository.com/
这里找到的8.0.12版本的

接着第一步
第二步
点击+号导入下载的驱动包。

连接数据库

在DBtools中实现DBconnect()方法

	private static final String DRIVER_NAME = "com.mysql.jdbc.Driver";
    //数据库连接地址
    private static final String URL = "jdbc:mysql://localhost:3306/test";
    //用户名
    private static final String USER_ID = "root";
    //密码
    private static final String PASSWORD = "377309978";

    //DBconnect方法
    public Connection DBconnect(Connection conn)
    {
        try{
            //加载MySQL的驱动类
            Class.forName(DRIVER_NAME);
            //获取数据库连接
            conn = DriverManager.getConnection(URL,USER_ID,PASSWORD);
            //简单的查询语句进行测试
            String sql = "SELECT JNO from j";
            //用PreparedStatement来执行SQL
            PreparedStatement statement = conn.prepareStatement(sql);
            ResultSet rs = statement.executeQuery(sql);
            //打印出结果集中的所有结果
            while(rs.next()) {
                String Jno = rs.getString("JNO");
                System.out.println(Jno);
            }
            rs.close();
            statement.close();

        }
        catch(ClassNotFoundException e)
        {
            System.out.println("JDBC Driver not found");
        }
        catch(SQLException e){
            System.out.println("SQL Error !");
            e.printStackTrace();
        }
        catch (Exception e){
            e.printStackTrace();
        }
        return conn;
    }

在Main中创建DBtools对象并调用DBconnect()方法

package Demo;

public class Main {
    public static void main(String[] args)
    {
    	Connection conn = null;
        DBtools dbt = new DBtools();
        dbt.DBconnect(conn);
    }
}

运行程序后
在这里插入图片描述

查询数据

public void check(Connection conn) {
        String sql = "SELECT JNAME from j";
        //用PreparedStatement来执行SQL
        try{
            PreparedStatement statement = conn.prepareStatement(sql);
            ResultSet rs = statement.executeQuery(sql);
            while(rs.next()) {
                String Jno = rs.getString("JNAME");
                System.out.println(Jno);
            }
            System.out.println();
            rs.close();
            statement.close();
        }
        catch (SQLException e) {
            System.out.println("SQL Error!");
            e.printStackTrace();
        }

    }

运行程序后
在这里插入图片描述

插入数据

public void insert(Connection conn) {
        String sql = "insert into j (JNO,JNAME,CITY) values ('J10','发电机厂','长沙')";
        //用PreparedStatement来执行SQL
        try{
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.executeUpdate(sql);
            statement.close();
        }
        catch (SQLException e) {
            System.out.println("SQL Error!");
            e.printStackTrace();
        }
    }

运行程序后
在这里插入图片描述

删除数据

public void delete(Connection conn){
        String sql = "delete from j where JNO = 'J10'";
        //用PreparedStatement来执行SQL
        try{
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.executeUpdate(sql);
            statement.close();
        }
        catch (SQLException e) {
            System.out.println("SQL Error!");
            e.printStackTrace();
        }
    }

在这里插入图片描述

修改数据

public void update(Connection conn){
        String sql = "update j set JNAME = '火车厂' where JNO = 'J2'";
        //用PreparedStatement来执行SQL
        try{
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.executeUpdate(sql);
            statement.close();
        }
        catch (SQLException e) {
            System.out.println("SQL Error!");
            e.printStackTrace();
        }
    }

在这里插入图片描述

附:PreparedStatement

PreparedStatement接口继承自Statement接口,PreparedStatement比普通Statement对象使用起来更加灵活更有效率.并且比Statement更加安全,因为Statement有一个漏洞就是可以sql注入
第一步:创建PreparedStatement对象
PreparedStatement pstm 同样是通过Connection的preparedStatement(sql)方法来创建对象,sql语句可具有一个或者多个输入参数,这些输入参数的值在SQL语句创建时未被指定,而是为每个输入参数保留一个问号’?'作为占位符;
示例:
下面的创建语句中就带有3个输入参数的SQL语句 pstm=con.prepareStatement(“update dog set health=?,love=? where id =?”);
第二步:设置每个输入参数的值
通过调用set*()方法来完成(*代表数据类型)
代码:
pstm.setInt(1,10);
pstm.setInt(2,90);
pstm.setString(3,“d1”);
(注意事项:占位符位置从1开始)
第三步:执行SQL语句
执行方法与Statement一样.比如:pstm.executeUpdate();
优点: 创建PreparedStatement对象时会对SQL语句进行预编译,所以执行速度要快于Statement对象,因此,如果程序中存在需要多次执行SQL语句时,应该使用PreparedStatement对象来执行数据库操作,以提高效率。
以上附参考自https://blog.csdn.net/miniduhua/article/details/52885482

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值