mysql:13101
From: TOMTOM <TOMTOM <tomf1@xxxxxxxxxx>>
Date: Mon, 19 Jun 2006 09:27:31 +0900
Subject: [mysql 13101] 排他制御????
こんにちは、 教えて欲しいことがあるのですが、 例えば、二台のパソコンから、mysqlにデータを 追加している時、一方のパソコンが、追加している時は、 他方は、待機して、追加が終わったとき、 待機していた方が、追加更新を始めるようにしたいのです。 これって、排他制御というのですか。??? パソコンが一台しか、無いので、 javaで、スレット処理を利用して、あたかも、二台から、アクセス しているようなコードにして、実行したのですが、 二つのスレットが交互にアクセスしているみたいで、 どうの様にしたら、期待した、 アクセスになるか、以下のプログラムを どのように、改造したらいいのか、教えてください。 環境 win xp jdk 1.5 mysql 5.0 connector 3.1.11 ******************************************* package threadsql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; /** * * @author */ class tsql extends Thread { Connection con=null; Statement stat = null; String data=null; public tsql(String url,String user,String pass,String data) { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(url,user,pass); stat = con.createStatement(); con.setAutoCommit(false); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } this.data=data; } public void run() { String sql = "insert into ff values('"+data+"')"; for(int i =0;i<100;i++){ try { int k = stat.executeUpdate(sql); System.out.println(data+" "+ i); Thread.sleep(100); } catch (InterruptedException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } } try { con.commit(); stat.close(); con.close(); } catch (SQLException ex) { ex.printStackTrace(); } } } public class threadsql { /** Creates a new instance of threadsql */ public threadsql() { String url="jdbc:mysql://localhost/test"; String user = "root"; String pass = "*********"; String data ="user1"; tsql t1 = new tsql(url,user,pass,data); String url1="jdbc:mysql://prim/test"; String user1 = "user2"; String pass1 = "*********"; String data1 ="user2"; tsql t2 = new tsql(url1,user1,pass1,data1); t1.start(); t2.start(); } /** * @param args the command line arguments */ public static void main(String[] args) { new threadsql(); // TODO code application logic here } } ***************************************************** 実行結果、 user1 0 user2 0 user1 1 user2 1 user1 2 user2 2 user1 3 user2 3 -------- これを、以下の様な、実行結果にしたいのです。 user1 0 user1 1 user1 2 user1 3 -------- -------- user2 0 user2 1 user2 2 user2 3 -------- -------- よろしくお願いいたします。
-> 13101 2006-06-19 09:27 [TOMTOM <tomf1@xxxxxx] 排他制御???? 13102 2006-06-19 09:46 ┗[Tetsuro IKEDA <te.ik] 13103 2006-06-19 14:21 ┗[TOMTOM <tomf1@xxxxxx] Re: : 排他制御????