Mega Code Archive

 
Categories / Java Tutorial / Database
 

Check Data Truncation

import java.sql.Connection; import java.sql.DataTruncation; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLWarning; import java.sql.Statement; public class Main {   public static void main(String[] args) throws Exception {     Connection conn = getConnection();     conn.setAutoCommit(false);     Statement stmt = conn.createStatement();     stmt.executeUpdate("create table survey (id int, name CHAR(5) );");     stmt.executeUpdate("INSERT INTO survey(id, name)VALUES(111, '123456789')");     displayError(stmt.getWarnings());     // try to write more data for the name column.     displayError(stmt.getWarnings());     // since there were no errors, commit     conn.commit();     ResultSet rs = stmt.executeQuery("SELECT * FROM survey");     outputResultSet(rs);     rs.close();     stmt.close();     conn.close();   }   public static void displayError(DataTruncation dataTruncation) {     if (dataTruncation != null) {       System.out.println("Data truncation error: ");       System.out.println(dataTruncation.getDataSize() + " bytes should have been ");       if (dataTruncation.getRead()) {         System.out.println("Read (Error:) ");       } else {         System.out.println("Written (Error:) ");       }       System.out.println(dataTruncation.getTransferSize()           + " number of bytes of data actually transferred.");     }   }   public static void displayError(SQLWarning warning) {     while (warning != null) {       if (warning instanceof DataTruncation) {         displayError((DataTruncation) warning);       } else {         System.out.println(" Warning: " + warning.getMessage());       }       warning = warning.getNextWarning();     }   }   private static void outputResultSet(ResultSet rs) throws Exception {     ResultSetMetaData rsMetaData = rs.getMetaData();     int numberOfColumns = rsMetaData.getColumnCount();     for (int i = 1; i < numberOfColumns + 1; i++) {       String columnName = rsMetaData.getColumnName(i);       System.out.print(columnName + "   ");     }     System.out.println();     System.out.println("----------------------");     while (rs.next()) {       for (int i = 1; i < numberOfColumns + 1; i++) {         System.out.print(rs.getString(i) + "   ");       }       System.out.println();     }   }   private static Connection getConnection() throws Exception {     Class.forName("org.hsqldb.jdbcDriver");     String url = "jdbc:hsqldb:mem:data/tutorial";     return DriverManager.getConnection(url, "sa", "");   } }