Ger*_*ton 0 java csv ms-access
我将下面的代码发布到Sun开发人员论坛,因为我认为它是错误的(真正的错误是在此代码被击中之前).我得到的其中一个回答说它不起作用并把它扔掉.但实际上它正在发挥作用.它可能不是最好的代码(我是Java的新手),但它本身就存在"错误"吗?
=============
码:
private static void ImportFromCsvToAccessTable(String mdbFilePath, String accessTableName
, String csvDirPath , String csvFileName ) throws ClassNotFoundException, SQLException {
Connection msConn = getDestinationConnection(mdbFilePath);
try{
String strSQL = "SELECT * INTO " + accessTableName + " FROM [Text;HDR=YES;DATABASE=" + csvDirPath + ";].[" + csvFileName + "]";
PreparedStatement selectPrepSt = msConn.prepareStatement(strSQL );
boolean result = selectPrepSt.execute();
System.out.println( "result = " + result );
} catch(Exception e) {
System.out.println(e);
} finally {
msConn.close();
}
}
Run Code Online (Sandbox Code Playgroud)
字面上的答案是否定的 - 代码永远不存在任何"内在错误",它是否符合要求 - 可能包括也可能不包括可维护,安全,健壮或快速.
您运行的代码实际上是一个纯粹在Access中的JET查询 - 除了告诉Access运行查询之外,Java代码什么都不做.
一方面,如果没有破坏,请不要修理它.另一方面,它很有可能在不久的将来破裂,所以你可以提前修复它.
它可能破坏的两个可能原因是:
说了这么多,我们都是关于实用主义的.如果上面的代码来自一个实用工作类,你将每周/每月/每年/手工使用几次,那么这不是一个真正的问题.
如果它是构成Web应用程序一部分的类,那么"官方"Java方法就是从CSV文件中读取记录(使用CSV解析器或CSV /文本JDBC驱动程序),得到记录集中的列,对它们执行一些验证或完整性检查,然后使用新的PreparedStatement将它们插入Access数据库.更麻烦但更强大.
您可以找到一些工具组合(例如对象关系层或其他数据访问工具),它们可以为您完成很多工作,但是设置工具将会像编写代码一样麻烦.然后,你会从任何一个中学到很多东西.
| 归档时间: |
|
| 查看次数: |
3927 次 |
| 最近记录: |