public class demo {
/* テスト */
public static void main (String args[]) throws SQLException, IOException {
Properties properties = new Properties() ;
String url = null;
Connection conn = null;
PreparedStatement pstmt = null;
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
properties.setProperty("user", "dcrm_dba1");
properties.setProperty("password", "SQL");
properties.setProperty("charset", "sjis"); url = "jdbc:oracle:thin:@192.168.10.34:1521:ckneo1"; conn = DriverManager.getConnection(url,properties);
String tempFileNameString = "C:\\testobj1.bin";
InputStream in = null;
in = new FileInputStream(tempFileNameString);
String updSqlStr = "UPDATE tExtractionReservation "
+ "SET condition = ?, "
+ "kind = '0', "
+ "priority = 9, "
+ "status = '8', "
+ "registDay = SYSDATE, "
+ "changeDay = SYSDATE "
+ "WHERE loginId = 'kainoa1_1' "
+ "AND kind = '0'";
pstmt = conn.prepareStatement(updSqlStr);
pstmt.setBinaryStream(1, in, (int) in.available());
pstmt.execute();
}
}
以上这段代码我一运行,就会出ERROR说不能将NULL更新到这个CONDITION字段中,
java.sql.SQLException: ORA-01407: ("DCRM_DBA1"."TEXTRACTIONRESERVATION"."CONDITION")をNULLには更新できません。
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:582)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1986)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1144)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2152)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2035)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2876)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:609)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:685)
at demo.main(demo.java:61)
/* テスト */
public static void main (String args[]) throws SQLException, IOException {
Properties properties = new Properties() ;
String url = null;
Connection conn = null;
PreparedStatement pstmt = null;
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
properties.setProperty("user", "dcrm_dba1");
properties.setProperty("password", "SQL");
properties.setProperty("charset", "sjis"); url = "jdbc:oracle:thin:@192.168.10.34:1521:ckneo1"; conn = DriverManager.getConnection(url,properties);
String tempFileNameString = "C:\\testobj1.bin";
InputStream in = null;
in = new FileInputStream(tempFileNameString);
String updSqlStr = "UPDATE tExtractionReservation "
+ "SET condition = ?, "
+ "kind = '0', "
+ "priority = 9, "
+ "status = '8', "
+ "registDay = SYSDATE, "
+ "changeDay = SYSDATE "
+ "WHERE loginId = 'kainoa1_1' "
+ "AND kind = '0'";
pstmt = conn.prepareStatement(updSqlStr);
pstmt.setBinaryStream(1, in, (int) in.available());
pstmt.execute();
}
}
以上这段代码我一运行,就会出ERROR说不能将NULL更新到这个CONDITION字段中,
java.sql.SQLException: ORA-01407: ("DCRM_DBA1"."TEXTRACTIONRESERVATION"."CONDITION")をNULLには更新できません。
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:582)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1986)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1144)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2152)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2035)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2876)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:609)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:685)
at demo.main(demo.java:61)
解决方法:
update table1 set col1='kkk' where exists(select null from table1 where)....之类的,不同之处就是要加exists解决