`
feng88724
  • 浏览: 171200 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

CSVJDBC使用感言

阅读更多
CSVJDBC

CSV文件的操作框架都很多,比如Commons的commons-csv、开源的CSVJDBC(只读) 、还有OpenCSV等等
本人最近试用了一下CSVJDBC,在使用的过程中,发现了一个比较奇怪的问题。

一般用法,大家都知道:
	      // load the driver into memory
	      Class.forName("org.relique.jdbc.csv.CsvDriver");
	      // create a connection. The first command line parameter is assumed to
	      //  be the directory in which the .csv files are held
	      Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + "E:\\" );
	      // create a Statement object to execute the query with
	      Statement stmt = conn.createStatement();

	      // Select the ID and NAME columns from sample.csv
	      ResultSet results = stmt.executeQuery("SELECT ID,NAME FROM Book1");
	      // dump out the results
	      while (results.next())
	      {
	        System.out.println("ID= " + results.getString("ID") + "   NAME= " + results.getString("NAME"));
	      }
	      String s = "%F%";	//模糊查询怎么处理?
	      ResultSet results2 = stmt.executeQuery("SELECT ID,NAME FROM Book1 WHERE NAME =" + s);
	      System.out.println("------------------------------------------" + results2);
	      while (results2.next()){
	    	  System.out.println(results2.getString("NAME"));
	      }
	      
	      // clean up
	      results.close();
	      stmt.close();
	      conn.close();
	    }
	    catch(Exception e)
	    {
	      System.out.println("Oops-> " + e);
	    }

小试一下,把里面("SELECT ID,NAME FROM Book1")中的 ID,NAME 换成 *;执行。。完全可以。噢,不错,功能挺强。

然后大家再在这句语句后加个条件 比如:ID = 4,加了条件后的语句("SELECT * FROM Book1 WHERE ID = 5").
执行。。呀,还是可以,不错不错。

这次我们把后面的调教变掉,换成NAME = XXX; 加了条件后的语句("SELECT * FROM Book1 WHERE NAME = XXX").
或者 ("SELECT * FROM Book1 WHERE NAME = 'XXX'").
执行,Failed。。这次不行了。。

这是什么原因呢?找了半天终于发现,只要把前面的 * 换成具体字段名就可以了。。。这叫什么事额。。

另外功能上面限制还是比较多,不能使用模糊查询比较麻烦。还得自己写

希望CSVJDBC能更强大,能真正像查询数据库那样来查询CSV文件。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics