-2

以下のデータを保存したいのはmysqlデータベースです。次のデータを保存するためのjdbcプログラムの書き方

私は次の表を持っています

message(messageid, message_heading ,message_data)
msgTag(tagid,tag,messageid)

私は次のデータを持っていますこんにちはお元気ですか(メッセージの見出し)

こんにちはお元気ですか....元気です(message_data)

タグ->abc、rst def、mer、hat

上記の表に上記のデータを保存したい方法。

また、トランザクション制御を使用する必要があります

私は次のコーディングを行いました

PreparedStatement msg = null;
PreparedStatement tags = null;

String querymsg =
    insert in to msg value(?,?,?);

String querytags =
               insert in to msg value(?,?,?);        
try {
    con.setAutoCommit(false);
   insertmsg = con.prepareStatement(querymsg);
    inserttags = con.prepareStatement(querytags);

        insertmsg.setString(1,msgid);
        insertmsg.setString(2,message_heading);
        insertmsg.setString(3,message_data);
        insertmsg.executeUpdate();



        inserttags.setString(1,tagid);
        inserttags.setString(2,tag);
        inserttags.setString(3,messageid);
        inserttags.executeUpdate();
    }
} catch (SQLException e ) {

    if (con != null) {
        try {
            System.err.print("Transaction is being rolled back");
            con.rollback();
        } catch(SQLException excep) {
            JDBCTutorialUtilities.printSQLException(excep);
        }
    }
} finally {
    if (insertmsg != null) {
        insertmsg.close();
    }
    if (inserttags != null) {
        inserttags.close();
    }
    con.setAutoCommit(true);
}
}

次のコードを変更して、1つのメッセージに関連するテーブルに複数のタグが格納され、トランザクション制御を維持するようにします。

4

1 に答える 1

0
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class InsertRecordsUsingPreparedStatement {
  public static Connection getConnection() throws Exception {
    String driver = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/databaseName";
    String username = "username";
    String password = "password";
    Class.forName(driver);
    Connection conn = DriverManager.getConnection(url, username, password);
    return conn;
  }

  public static void main(String[] args) throws Exception {
    Connection conn = null;
    PreparedStatement pstmt = null;
    try {
      conn = getConnection();
      String query = "insert into message values(?, ?, ?)";

      pstmt = conn.prepareStatement(query); // create a statement
      pstmt.setInt(1, 5); // set input parameter 1
      pstmt.setString(2, "head5"); // set input parameter 2
      pstmt.setString(3, "data5"); // set input parameter 3
      pstmt.executeUpdate(); // execute insert statement
      pstmt = conn.prepareStatement("insert into msgtag values(?, ?, ?)"); // create a statement
      pstmt.setInt(1, 55); // set input parameter 1
      pstmt.setString(2, "tag5"); // set input parameter 2
      pstmt.setInt(3, 5); // set input parameter 3
      pstmt.executeUpdate(); // execute insert statement
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      pstmt.close();
      conn.close();
    }
  }
}
于 2013-02-06T07:57:10.723 に答える