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文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值