java - 怎么同时查询100个 数据库 里面的同一个表名字的内容。
PHPz
PHPz 2017-04-18 09:49:07
0
5
741

用同一个sql语句查询。
100个数据库里面的表的结构都是相同的。

我现在要做的就是::需要同时链接100个数据库进行查询。查出一条符合 条件的就显示一条。。

Class.forName("com.mysql.jdbc.Driver");

          conn=DriverManager.getConnection("jdbc:mysql://192.168.20.236:3306/express001","root" ,"123456");
         ps=conn.prepareStatement("select * from sf where f29=? or f30=? or f40=? or f41=?");
       

这是连接1个数据库的时候。。。
有什么好办法可以解决嘛

多线程能解决吗??我没有接触过多线程,,如果可以,还请麻烦给点提示 谢谢。。。

PHPz
PHPz

学习是最好的投资!

répondre à tous(5)
刘奇

Je ne l'ai pas encore testé, essayez-le

public class Test100Conn {

    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }


    public static void main(String[] args) throws Throwable {
        String f29 = "haha"; //或者其他类似条件?
        
        String db ;
        for (int i = 1; i <= 100; i++) {
            if (i < 10) {
                db = "00" + i;
            }
            else if (i >= 10 && i < 100) {
                db = "0" + i;
            }else{
                db = "100";
            }
            Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.20.236:3306/express" + db, "root", "123456");
            PreparedStatement stmt = conn.prepareStatement("select * from sf where f29=? or f30=? or f40=? or f41=?");
            stmt.setString(1, "");//下面还有几个,这个1看你具体需求
            ResultSet rs = stmt.executeQuery();
            while(rs.next()){
                System.out.println("这是第"+db+"个数据库开始");
                if(rs.getString(1).equals(f29)){  //判断条件放在这里判断
                    System.out.println(rs.getString(1));
                    break;
                }
                System.out.println("这是第"+db+"个数据库结束");
            }
            rs.close();
            stmt.close();
            conn.close();
        }

    }
}
Peter_Zhu

Je pense que le multi-threading peut le résoudre... sinon il sera exécuté de manière synchrone.

洪涛

Existe-t-il un bon moyen de procéder ? Connectez-les un par un. Le nombre de threads doit correspondre au nombre de cœurs de processeur. Utilisez un pool de threads.

大家讲道理

Puisque vous souhaitez exploiter 100 bibliothèques, vous avez naturellement besoin de 100 connexions différentes. C'est une condition difficile.

Donnez à l'affiche un projet open source de Dangdang.com.
sharding-jdbc

黄舟

S'il s'agit d'Oracle, vous pouvez utiliser dblink. Si vous n'êtes pas l'auteur original, utilisez MySQL. Vous ne pourrez peut-être vous connecter qu'à 100 bases de données pour les interroger séparément et enfin les résumer. Si plusieurs threads sont utilisés pour interroger ces 100 bases de données séparément, vous devez faire attention aux problèmes de sécurité des threads lors de l'agrégation

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal