使用dbf_jdbc问题绕过dbf文件

时间:2012-01-20 13:21:55

标签: java jdbc dbf

执行以下代码后无法重命名文件:

private static final String URL = "jdbc:DBF:/C:\\TEST";
private static final String TABLE = "create table SAMPLE ( "
+ " SM VARCHAR(10), "
+ " PRIM  VARCHAR(10) " + ")"; 

...

Properties properties = new Properties();
properties.setProperty( "charSet", "cp866" );
properties.setProperty( "CODEPAGEID", "66" );

// instantiate it
Class.forName( "com.hxtt.sql.dbf.DBFDriver" ).newInstance();
Connection dbfConn = DriverManager.getConnection( URL, properties );
Statement stmt = dbfConn.createStatement();
stmt.executeUpdate( TABLE );
stmt.close();
PreparedStatement ps = dbfConn.prepareStatement( "INSERT INTO SAMPLE (SM, PRIM) VALUES (?,?);"  );
ps.setString( 1, "test11" );
ps.setString( 2, "test12" );
ps.executeUpdate();
ps.close();
dbfConn.close();
new File( "C:\\TESTarj\\SAMPLE.DBF").renameTo( new File( "C:\\TESTarj\\SAMPLE_renamed.DBF" ) );

如果删除ps.executeUpdate();文件已重命名。问题仅出现在最后星期五13日。之前工作得很好。 dbf_jdbc,Java,tomcat版本尚未更改。问题同时出现在几个盒子上。作为一种解决方法,我可以使用javadbf,但它不是我们案例中的最佳选择。

任何想法可能导致问题?

1 个答案:

答案 0 :(得分:1)

 properties.setProperty( "delayedClose", "0" );

// delayedClose表示关闭事务的延迟秒数。该选项用于避免频繁的关闭/打开表操作以跟随sqls。当delayedClose< = 60s时,自动临时索引被禁用。你可以使用0~120秒。默认值:3。