Java实现获得MySQL数据库中所有表的记录总数可行方法_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1864 | 回复: 0   主题: Java实现获得MySQL数据库中所有表的记录总数可行方法        下一篇 
    本主题由 koei123 于 2015-7-14 11:14:25 移动
xuefeng
注册用户
等级:上士
经验:315
发帖:69
精华:0
注册:2011-8-17
状态:离线
发送短消息息给xuefeng 加好友    发送短消息息给xuefeng 发消息
发表于: IP:您无权察看 2015-5-15 10:38:53 | [全部帖] [楼主帖] 楼主

在MySQL中,可以通过SELECT COUNT(*) FROM table_name查询某个表中有多少条记录。如果想知道某个数据库中所有别的记录总数应该怎么做呢?本文给出两种可行的Java程序,解决该问题。

1. 首先确定数据库中有多少个表,然后对每个表执行SELECT COUNT(*) FROM table_name 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class Test {
      private static String driver = "com.mysql.jdbc.Driver";
      private static String url = "jdbc:mysql://127.0.0.1/";
      private static String db = "test";
      private static String user = "root";
      private static String pass = "test";
      static Connection conn = null;
      static Statement statement = null;
      static PreparedStatement ps = null;
      static ResultSet rs = null;
      static List<String> tables = new ArrayList<String>();
      public static void startMySQLConn() {
            try {
                  Class.forName(driver).newInstance();
                  conn = DriverManager.getConnection(url+db, user, pass);
                  if (!conn.isClosed()) {
                        System.out.println("Succeeded connecting to MySQL!");
                  }
                  statement = conn.createStatement();
            } catch (Exception e) {
                  e.printStackTrace();
            }
      }
      public static void closeMySQLConn() {
            if(conn != null){
                  try {
                        conn.close();
                        System.out.println("Database connection terminated!");
                  } catch (SQLException e) {
                        e.printStackTrace();
                  }
            }
      }
      public static void getTables() {
            String sql = "show tables;";
            try {
                  ps = conn.prepareStatement(sql);
                  rs = ps.executeQuery();
                  while (rs.next()) {
                        tables.add(rs.getString(1));
                  }
            } catch (Exception e) {
                  e.printStackTrace();
            }
      }
      public static long getDbSum() {
            long sum = 0;
            String sql = "select count(*) from ";
            try {
                  for(String tblName: tables) {
                        ps = conn.prepareStatement(sql + tblName + ";");
                        rs = ps.executeQuery();
                        while (rs.next()) {
                              sum += rs.getInt(1);
                        }
                  }
            } catch (Exception e) {
                  e.printStackTrace();
            }
            return sum;
      }
      public static void main(String[] args) {
            startMySQLConn();
            getTables();
            System.out.println(getDbSum());
            closeMySQLConn();
      }
}


2. 借助information_schema库的tables表 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class Test {
      private static String driver = "com.mysql.jdbc.Driver";
      private static String url = "jdbc:mysql://127.0.0.1/";
      private static String db = "test";
      private static String user = "root";
      private static String pass = "test";
      static Connection conn = null;
      static Statement statement = null;
      static PreparedStatement ps = null;
      static ResultSet rs = null;
      public static void startMySQLConn() {
            try {
                  Class.forName(driver).newInstance();
                  conn = DriverManager.getConnection(url+db, user, pass);
                  if (!conn.isClosed()) {
                        System.out.println("Succeeded connecting to MySQL!");
                  }
                  statement = conn.createStatement();
            } catch (Exception e) {
                  e.printStackTrace();
            }
      }
      public static void closeMySQLConn() {
            if(conn != null){
                  try {
                        conn.close();
                        System.out.println("Database connection terminated!");
                  } catch (SQLException e) {
                        e.printStackTrace();
                  }
            }
      }
      public static void useDB() {
            String sql = "use information_schema;";
            try {
                  ps = conn.prepareStatement(sql);
                  rs = ps.executeQuery();
            } catch (Exception e) {
                  e.printStackTrace();
            }
      }
      public static long getDbSum() {
            long sum = 0;
            String sql = "select table_name,table_rows from tables where TABLE_SCHEMA = '" +
            db + "' order by table_rows desc;";
            //System.out.println(sql);
            try {
                  ps = conn.prepareStatement(sql);
                  rs = ps.executeQuery();
                  while (rs.next()) {
                        sum += rs.getInt(2);
                  }
            } catch (Exception e) {
                  e.printStackTrace();
            }
            return sum;
      }
      public static void main(String[] args) {
            startMySQLConn();
            useDB();
            System.out.println(getDbSum());
            closeMySQLConn();
      }
}


--转自 北京联动北方科技有限公司

该贴由koei123转至本版2015-7-14 11:14:24



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论