当前位置: 首页 > 工具软件 > CsvJdbc > 使用案例 >

CSVJDBC使用感言

尉迟华翰
2023-12-01
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文件。
 类似资料: