java程序中怎样从数据库的一张表中随机提取几条数据?

java程序中怎样从数据库的一张表中随机提取几条数据?,第1张

1. 用select count(*)得到总记录条数t;

2. 用分页查找,用随机数Random得到一个0<x<t的x数,然后分页的分页数和分页量都用x

3.该分页查找得到的就是一个随机的记录。

4.循环1-3步骤,直到得到希望数量的随机记录。

package com.joinmysql.demo  

  

import java.sql.DriverManager  

import java.sql.ResultSet  

import java.sql.SQLException  

import java.sql.Connection  

import java.sql.Statement  

   

public class MysqlDemo {  

    public static void main(String[] args) throws Exception {  

        Connection conn = null  

        String sql  

        // MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值  

        // 避免中文乱码要指定useUnicode和characterEncoding  

        // 执行数据库 *** 作之前要在数据库管理系统上创建一个数据库,名字自己定,  

        // 下面语句之前就要先创建javademo数据库  

        String url = "jdbc:mysql://localhost:3306/test?user=root&password=jiangwei&useUnicode=true&characterEncoding=UTF8"  

        try {  

            // 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,  

            // 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以  

            Class.forName("com.mysql.jdbc.Driver")// 动态加载mysql驱动  

            // or:  

            // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver()  

            // or:  

            // new com.mysql.jdbc.Driver()  

   

            System.out.println("成功加载MySQL驱动程序")  

            // 一个Connection代表一个数据库连接  

            conn = DriverManager.getConnection(url)  

            // Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等  

            Statement stmt = conn.createStatement()  

            sql = "create table student(NO char(20),name varchar(20),primary key(NO))"  

            int result = stmt.executeUpdate(sql)// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功  

            if (result != -1) {  

                System.out.println("创建数据表成功")  

                sql = "insert into student(NO,name) values('2012001','陶伟基')"  

                result = stmt.executeUpdate(sql)  

                sql = "insert into student(NO,name) values('2012002','周小俊')"  

                result = stmt.executeUpdate(sql)  

                sql = "select * from student"  

                ResultSet rs = stmt.executeQuery(sql)// executeQuery会返回结果的集合,否则返回空值  

                System.out.println("学号\t姓名")  

                while (rs.next()) {  

                    System.out.println(rs.getString(1) + "\t" + rs.getString(2))// 入如果返回的是int类型可以用getInt()  

                }  

            }  

        } catch (SQLException e) {  

            System.out.println("MySQL *** 作错误")  

            e.printStackTrace()  

        } catch (Exception e) {  

            e.printStackTrace()  

        } finally {  

            conn.close()  

        }  

   

    }  

   

}

思路

int intCount=0 //查看rs的数据行数

rs.last() 得到最后一条

intCount=rs.getRow()

int intSuiji=((int) Math.round((Math.random()*100))%intCount) //得到随机的行数

int temp=0

while(rs.next())

{

if(temp==intSuiji){

rs.getString("a") //得到a字段

}

temp++

}

以上只是思路,没测试,觉得对您有用,给分,嘎


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10854412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存