JAVA连接数据库的两种方式

JAVA连接数据库的两种方式

QueryRunner类中的方法
1、query():查
2、update():增、删、改
createStatement类中的方法
1、executeQuery():只能执行查询语句
2、executeUpdate():只能增、删、改, 不能执行查询语句
3、execute():增、删、改、查的语句都能够执行。只是查询时返回的结果是告诉成功与否,如果要获取查询结果,得另外用" st.getResultSet()"获取
4、executeBatch()

通过QueryRunner()

 // 用于获得表格中保存的全部单词并保存到List中
        public static List<Word> retrieveAllWords() {
            // 增加日志信息用于调试
            logger.config("进入DBHelper类的retrieveAllWords方法!");
            List<Word> words = new ArrayList<Word>();// 用于保存查询到单词
            QueryRunner runner = new QueryRunner();// 获得QueryRunner类对象
            Connection conn = getConnection();// 获得数据库连接
            String sql = "select * from tb_dictionary;";// 定义SQL语句
            ResultSetHandler<List<Object[]>> rsh = new ArrayListHandler();
            try {
                List<Object[]> results = runner.query(conn, sql, rsh);// 获取全部单词
                for (Object[] result : results) {
                    Word word = new Word();// 创建Word对象
                    word.setId((Integer) result[0]);
                    word.setSpelling((String) result[1]);
                    word.setPhoneticSymbols((String) result[2]);
                    word.setPronunciation((String) result[3]);
                    word.setPartOfSpeech((String) result[4]);
                    word.setImage(new SerialBlob((byte[]) result[5]));
                    word.setMeaning((String) result[6]);
                    word.setFrequency((Integer) result[7]);
                    words.add(word);// 向列表中保存word对象
                }
            } catch (SQLException e) {
                logger.log(Level.WARNING, "从数据表中获取全部单词发生异常!", e);
            } finally {
                DbUtils.closeQuietly(conn);// 关闭连接
            }
            Collections.sort(words, new Comparator<Word>() {// 根据单词拼写排序
                        @Override
                        public int compare(Word word1, Word word2) {
                            String spelling1 = word1.getSpelling();
                            String spelling2 = word2.getSpelling();
                            return spelling1.compareTo(spelling2);
                        }
                    });
            return words;
        }

通过createStatement()

 // 用于根据用户输入的拼写查询单词,其副作用是使单词查询频率增加一
public static Word retrieveWordBySpellingForUser(String spelling) {
    // 增加日志信息用于调试
    logger.config("进入DBHelper类的retrieveWordBySpellingForUser方法!");
    Connection conn = getConnection();// 获得数据库连接
    Statement stmt = null;
    ResultSet rs = null;
    String sql = "select * from tb_dictionary where spelling ='" + spelling + "';";
    try {
        stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
        rs = stmt.executeQuery(sql);
        if (rs.next()) {// 如果存在需要查询的单词
            Word word = new Word();
            word.setId(rs.getInt("id"));
            word.setSpelling(rs.getString("spelling"));
            word.setPhoneticSymbols(rs.getString("phoneticsymbols"));
            word.setPronunciation(rs.getString("pronunciation"));
            word.setPartOfSpeech(rs.getString("partofspeech"));
            word.setImage(rs.getBlob("image"));
            word.setMeaning(rs.getString("meaning"));
            word.setFrequency(rs.getInt("frequency"));

            rs.updateInt("frequency", word.getFrequency() + 1);// 将查询频率加一
            rs.updateRow();// 更新数据库中的查询频率

            return word;

        } else {
            return null;// 如果没有查询到单词则返回null
        }

    } catch (SQLException e) {
        logger.log(Level.WARNING, "用户查询单词发生异常!", e);
    } finally {
        DbUtils.closeQuietly(conn, stmt, rs);
    }
    return null;// 如果发生异常则返回null
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值