[前][次][番号順一覧][スレッド一覧]

mysql:7494

From: くろ たろう <くろ たろう <kuro_taro_aki@xxxxxxxxxx>>
Date: Tue, 15 Apr 2003 17:43:17 +0900 (JST)
Subject: [mysql 07494] JAVA プログラムで insert が正常に行われません

こんにちは。くろたろうです。いろいろ試してみたんですが、
どうしても直らないので、よろしくお願いします。
※さきほど、間違えたメールを一通送ってしまいました。申し
訳ありません。

(環境)
・JDK:J2SDK1.4.1
・MYSQL:mysql-4.0.1.2
・JDBCドライバ:gweMysqlJDBC_extra4

(やろうとしていること)
java.sql.ResultSetの更新系メソッドを用いてデータのinsert
を行いたい

(問題点)
データのinsertが、決まった行でしか行われません。二度、三
度とinsertを行う度、java.sql.ResultSet.moveToInsertRow()
メソッドを使用して挿入行を指定しているのですが、プログラ
ムを立ち上げる前に存在するテーブルの、最終行を常に更新し
てしまいます。
※executeQuery()を使用して、直接insert文を投げても同じ結
果になってしまいました。
※setFetchDirection(ResultSet.FETCH_FORWARD)も使用してみ
ましたが、結果は同じでした。

以下に、実行結果とソースを掲載します。

(ソース)

//InsertData.java
import java.sql.*;
import java.util.*;

public class InsertData{
 //Field
 Vector rows;
 //Constructor
 public InsertData(Vector rows){
  this.rows = rows;
  try{
   //DBへの接続
   DBAccessor dbAccessor = new DBAccessor();
   //ResultSetの取得
   ResultSet rs = dbAccessor.getResultSet();
   //既存の行数を取得(データ番号を割り振るため)
   rs.last();
   int lastRow = rs.getRow();
   //データの挿入
   for(int i = rows.size();i > 0;i--){
	doInsert(データを与えています);
   }
   //DB接続の終了
   dbAccessor.closeResultSet(); 
      dbAccessor.closeStatement();
      dbAccessor.closeConnection();
      dbAccessor2 = null;
    }catch(SQLException sqlEx){
      sqlEx.printStackTrace();
    }
  }
  private void
doInsert(ResultSetrs,intlastRow,java.sql.Date date,
int raceSeq,int firstPrise,float odds) throws
SQLException{
  //カーソルをinsert行に移動
  rs.moveToInsertRow();
  //カラム値の更新
  rs.updateInt(1,lastRow);
  rs.updateDate(2,date);
  rs.updateInt(3,raceSeq);
  rs.updateInt(4,firstPrise);
  rs.updateFloat(5,odds);
  //insertの実行
  rs.insertRow();
  }
}

(実行結果)
(1)insert実行前のデータです。SEQ列の番号は整列してい
ます。(このデータは手動で作成しました。)
mysql> select * from master;
+-----+------------+---------+------------+------+
| SEQ | DAY        | RaceSEQ | FirstPrise | ODDS |
+-----+------------+---------+------------+------+
|   1 | 2002-09-08 |       1 |          2 |  2.7 |
|   2 | 2002-09-08 |       3 |          3 |  5.6 |
|   3 | 2002-09-08 |       6 |          3 |  6.6 |
|   4 | 2002-09-08 |       7 |          4 |    8 |
|   5 | 2002-09-09 |       1 |          1 |  5.7 |
|   6 | 2002-09-09 |       2 |          3 |  3.3 |
+-----+------------+---------+------------+------+
6 rows in set (0.00 sec)
(2)一度目のinsert実行後です。SEQ列の「7」というデー
タをひとつだけ挿入しました。正常です。

mysql> select * from master;
+-----+------------+---------+------------+------+
| SEQ | DAY        | RaceSEQ | FirstPrise | ODDS |
+-----+------------+---------+------------+------+
|   1 | 2002-09-08 |       1 |          2 |  2.7 |
|   2 | 2002-09-08 |       3 |          3 |  5.6 |
|   3 | 2002-09-08 |       6 |          3 |  6.6 |
|   4 | 2002-09-08 |       7 |          4 |    8 |
|   5 | 2002-09-09 |       1 |          1 |  5.7 |
|   6 | 2002-09-09 |       2 |          3 |  3.3 |
|   7 | 1970-01-01 |       5 |          5 |   58 |
+-----+------------+---------+------------+------+
7 rows in set (0.00 sec)

(3)二度目のinsertです。SEQ列の「8」とういうデータをinsert
しましたが、順序が入れ替わっています。この後、何度データ
を入れても、プログラムを一番初めに起動したときのデータ挿
入位置に、新しいデータが挿入されてしまいます。

mysql> select * from master;
+-----+------------+---------+------------+------+
| SEQ | DAY        | RaceSEQ | FirstPrise | ODDS |
+-----+------------+---------+------------+------+
|   1 | 2002-09-08 |       1 |          2 |  2.7 |
|   2 | 2002-09-08 |       3 |          3 |  5.6 |
|   3 | 2002-09-08 |       6 |          3 |  6.6 |
|   4 | 2002-09-08 |       7 |          4 |    8 |
|   5 | 2002-09-09 |       1 |          1 |  5.7 |
|   6 | 2002-09-09 |       2 |          3 |  3.3 |
|   8 | 1970-01-01 |       5 |          5 |   58 |
|   7 | 1970-01-01 |       5 |          5 |   58 |
+-----+------------+---------+------------+------+
8 rows in set (0.00 sec)

__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/


[前][次][番号順一覧][スレッド一覧]

->    7494 2003-04-15 17:43 [くろ たろう <kuro_ta] JAVA プログラムで insert が正常に行われません
      7495 2003-04-15 18:06 ┣[Kengo Jinno <kengo@x]                                       
      7496 2003-04-15 18:08 ┗[UNO Shintaro <uno@xx]