私は次の表を持っています:
問題は、JDBCを使用してこのフィールドに文字列を挿入しようとすると、常に次のエラーが発生することです。
java.sql.SQLException: Data size bigger than max size for this type: 6019
私は今どうすればいい?
INSERTを生成するためのJavaコードは次のとおりです。
Connection conn2 = null;
if(connection==null||connection.isClosed())
{
System.out.println("Connection is null");
conn2 = connectDB();
}
//REPLACE is non-standard SQL from MySQL, it's counter part of INSERT IGNORE
String sql = "";
sql = "INSERT INTO TEST."+tablename+" ("+fields+") VALUES ("+fields.replaceAll("[^,]+", "?")+")";
System.out.println("SQL: "+sql);
PreparedStatement pstmt = conn2.prepareStatement(sql);
// start parsing
int event = r.getEventType();
while (true) {
// for each wanted element
if (event == XMLStreamConstants.START_ELEMENT
&& r.getName().toString().equalsIgnoreCase("row")) {
System.out.println("Table : "+tablename+" / Row : "+rowCount );
if (attributeCount == 0)
attributeCount = r.getAttributeCount();
//put each parameter to SQL
int f=1;
for (String field : fieldsArray){
String value = r.getAttributeValue("",field);
if("body".equalsIgnoreCase(field) && value != null) {
pstmt.setCharacterStream(f++, new CharArrayReader(value.toCharArray()), value.length());
} else {
pstmt.setString(f++, value);
}
}
pstmt.addBatch();
rowCount++;
if(rowCount%rowspercommit==0){
System.out.println("Importing at row "+rowCount+" ... ");
pstmt.executeBatch();
conn2.commit();
}
} // end for each row.
誰かが私のためにそれをしたので、CREATETABLEがどのようになっているのかわかりません
上記の現在のコードで、私は今これを取得しています:
Exception in thread "main" java.lang.NullPointerException
at oracle.jdbc.dbaccess.DBData.clearItem(DBData.java:431)
at oracle.jdbc.dbaccess.DBDataSetImpl.clearItem(DBDataSetImpl.java:3528)
at oracle.jdbc.driver.OraclePreparedStatement.checkBindTypes(OraclePreparedStatement.java:3271)
at oracle.jdbc.driver.OraclePreparedStatement.setStreamItem(OraclePreparedStatement.java:1178)
at oracle.jdbc.driver.OraclePreparedStatement.setCharacterStream(OraclePreparedStatement.java:3539)
at XMLDumpImporter.importXMLFile(XMLDumpImporter.java:179)
at XMLDumpImporter.importXMLFolder(XMLDumpImporter.java:117)
at XMLDumpImporter.main(XMLDumpImporter.java:48)
行で:
if("body".equalsIgnoreCase(field) && value != null) {
pstmt.setCharacterStream(f++, new CharArrayReader(value.toCharArray()), value.length());
何がnullになる可能性があるので、これはまったく意味がありませんでした