java数据库增删改查语句是不是有规律?实例讲解

数据库是长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。那java数据库增删改查语句是不是有规律?下面来我们就来给大家讲解一下。

使用JAVA程序封装数据库的增删改,查语句,使用jdbc操作数据库时,需要书写sql语句,而且当操作的需求更改时,这个方法就不能使用了,但其中的大部分实现代码都是相同,所以我们自己封装一个方法,用来对所有的增删改操作都有效的方法

实现封装功能使用到了可变参数。

封装增删改语句的代码如下:

//创建连接对象
private Conn conn = new Conn();
//封装增删改语句
public int operationSql(String sql, Object...objects)
{
    //获取连接
    Connection connection = conn.getConnection();
    PreparedStatement preparedStatement = null;
    //定义统计变量
    int count = 0;
    try
    {
        preparedStatement = connection.prepareStatement(sql);
        //通过for循环设置sql语句中每个占位符的值
        for (int i = 0; i < objects.length; i++)
        {
            preparedStatement.setObject(i + 1, objects[i]);
        }
        count = preparedStatement.executeUpdate();
    }
    catch (SQLException e)
    {
        e.printStackTrace();
    }
    finally
    {
        closeSql(connection, preparedStatement, null);
    }
    return count;
}

在进行数据库操作之间必须要先获取到一个数据库连接。

这里解释一下prepareStatement和它的父类Statement的使用和区别:

1,PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程

2,statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得, preparedstatement支持批处理的

3,使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大

4,因为prepareStatement是预编译的,所以它还可以预防SQL注入

executeUpdate()这个方法就是执行数据库增,删,改 操作的,会返回一个int值该值代表的指示受影响的行数(即更新计数)。

封装查询语句的代码如下:

public void selectSql(String sql, Object...objects)
{
    //获取连接
    Connection connection = conn.getConnection();
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;
    try
    {
        preparedStatement = connection.prepareStatement(sql);
        //通过for循环设置sql语句中每个占位符的值
        for (int i = 0; i < objects.length; i++)
        {
            preparedStatement.setObject(i + 1, objects[i]);
        }
        resultSet = preparedStatement.executeQuery();
        while (resultSet.next())
        {
            System.out.println(resultSet.getInt(1) + "\t" + resultSet.getString(2) + "\t" + resultSet.getInt(3));
        }
    }
    catch (SQLException e)
    {
        e.printStackTrace();
    }
    finally
    {
        closeSql(connection, preparedStatement, resultSet);
    }
}

同样,操作前必须要获取一个数据库连接

executeQuery()这个方法就是执行数据库查询操作的,并且它还会返回一个resultSet结果集。通过遍历获取集合中的数据

大家注意到在每个try … catch 后面都有finally

因为我们在使用结束后需要关闭资源,使用数据库连接池的话,可以不用考虑关闭连接的占用资源的问题。这里只是讲述一下关闭资源的额方法和流程。

现在我们将它封装成一个方法,方法代码如下:

public void closeSql(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet)
{
    if (connection != null)
    {
        try
        {
            connection.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
    if (preparedStatement != null)
    {
        try
        {
            preparedStatement.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
    if (resultSet != null)
    {
        try
        {
            resultSet.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
    System.out.println("关闭成功!!");
}

当资源对象不为空时,调用它的close()方法关闭资源。

java数据库增删改查语句肯定是有一定规律性的,只要大家掌握好技巧,进行java数据库增删改查语还是很容易的。最后大家如果想要了解更多初识java知识,敬请关注奇Q工具网。

推荐阅读:

json数据里有双引号怎么解析?json数据双引号解析方法

qtjson二进制如何传输?qtjson二进制传输格式

java面试小公司一般多久通知?Java有哪些面试技巧?