不要让固定思维框死自己的脑子

   今天用sqlite做一个测试。杂七杂八的配置好之后,就开始跑起来。结果发现sqlite没有配置好,一直没用过mock测试,所以直接在dao的实现里面写了一个main方法。.db文件放在项目下。
	public static void main(String[] args) throws SQLException,
			ClassNotFoundException {

		ApplicationContext ctx = new ClassPathXmlApplicationContext( 
				"applicationContext.xml");
		DataSource dataSource = (DataSource) ctx.getBean("dataSource");

		JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

		SqlRowSet sqlRowSet = jdbcTemplate
				.queryForRowSet("select * from vgs_tlyr_index");

		List l = new ArrayList();
		while (sqlRowSet.next()) {// 将查询到的数据打印出来
			System.out.println(sqlRowSet.getString("LYRALIAS"));
			Map map = new HashMap();

			map.put("LYRALIAS", sqlRowSet.getString("LYRALIAS"));
			map.put("MINY", sqlRowSet.getString("MINY"));
			map.put("LYRURL", sqlRowSet.getString("LYRURL"));
			l.add(map);
		}
	}


结果能运行。于是自然而然的写在dao里面了。
    后来程序跑起来,发现找不到表名。开始想了想以为是jdbcTemlate没有初始化。但是看后台显示代码并不是空指针异常。就调试了下。结果是得不到表名。
刚开始感觉很奇怪,为什么在main方法里面能得到,在web上却得不到。有想到是路径问题。因为之前很少接触嵌入式数据库。所以,根本没考虑.db文件放在哪里。
    后来想了想,觉得是路径的问题。于是在src下、项目目录下、各个子目录下均放了一个.db文件。满以为能跑起来,结果还是让我失望了。
于是去网上查,第一页基本上是一个叫SQLite与JAVA的博客。不过貌似没有看到与sqlite相关的。倒是看到了一个spring配置derby的文章。刚开始想试一试。结果,转念一想, 这个都用了绝对路径,到时候不好移植
    就因为这个想法,让我胡乱的猜测了好久,却没有想想能不能把项目跑起来。
    后面还是 http://jinnianshilongnian.iteye.com/kaitao哥指出来。我才想起用绝对路径试一试,结果就出来了。感谢他一下。
    所以,很是时候,也许在不经意间用了固定思维,只是突然觉得不行,然后立马放弃,转了一个弯回来,发现原来解决办法早就被你看到过。只是你忽视了而已。
    想到以前,一本叫java编程思想的书,论坛里都说这本书如何如何,结果就搜啊搜,结果发现,我自己很早以前就有过一本。只是叫think in java而已。
    在想想,学习使用spring和struts2的时候,总是找不到例子。最后就写了几个helloworld。感觉自己也还可以了。然后想进一步提高的时候发现没什么好的例子了。其实,在下载的那些包里,已经有很多小的实例了。
    身在宝山却不自知,很多事时候都这样吧 !
    希望,以后思维不要那么死!

不过还是有一点疑问:为什么在使用main方法的时候能找到,而在web环境下却找不到了。

收获是:1:使用绝对路径jdbc:sqlite:F:\workspace\sqlite3\vgs_tile_sys.vts
2:如果使用<value>jdbc:sqlite:/sqlite3/vgs_tile_sys.vts</value>会提示path to '/sqlite3/vgs_tile_sys.vts': 'D:\sqlite3' does not exist 项目是在f盘下。d盘是jdk目
录所在的盘。
即在本机,applicationContext.xml搜寻是以jdk(tomcat配置的)为当前目录的。

尚未解决问题:怎样使用相对路径。




猜你喜欢

转载自inmethetiger.iteye.com/blog/1723174