0
我的单元测试正常工作的查询,但是当我在本地运行我的应用程序时,它找不到列销售商。GAE查询工作单元测试,但不是本地测试
String statement = "SELECT * FROM " + TABLE_NAME + " "
+ "INNER JOIN " + DbSeller.TABLE_NAME + " seller ON video.seller = seller.id "
+ "WHERE video.name LIKE ?";
//create statement
PreparedStatement stmt = DataBase.getInstance().prepareStatement(statement);
//set data
stmt.setString(1, "%" + s + "%");
//send query
ResultSet rs = stmt.executeQuery();
//the result
while(rs.next()) {
Video v = new Video();
System.out.println("test === " + rs.getInt("seller.id")); // <---- EXCEPTION (Column not found!!!!)
set(rs, v);
listVideo.add(v);
}
stmt.close();
如果我这样做,相反,它是罚款:(只是为了测试我不想结束了由专栏中,我需要哪些信息写入列)
String statement = "SELECT video.*, seller.id as seller_id FROM " + TABLE_NAME + " "
+ "INNER JOIN " + DbSeller.TABLE_NAME + " seller ON video.seller = seller.id "
+ "WHERE video.name LIKE ?";
//create statement
PreparedStatement stmt = DataBase.getInstance().prepareStatement(statement);
//set data
stmt.setString(1, "%" + s + "%");
//send query
ResultSet rs = stmt.executeQuery();
//the result
while(rs.next()) {
Video v = new Video();
System.out.println("test === " + rs.getInt("seller_id")); // <---- NO EXCEPTION
set(rs, v);
listVideo.add(v);
}
stmt.close();
注:我的应用程序在MySQL中的同一个脱机数据库上运行,所以唯一的区别是我通过我的应用程序而不是单元测试运行这个查询。
什么是异常被抛出? – proppy 2013-03-25 18:00:27
未找到列(seller.id) – 2013-03-25 18:12:46
“video”和“seller”中的所有列名是唯一的,即您确定没有两个名为'id'的列。如果有共享的列名,那么你不能使用'select *',并且尽可能避免'select *' – crowne 2013-03-26 11:09:58