2013-03-25 80 views
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中的同一个脱机数据库上运行,所以唯一的区别是我通过我的应用程序而不是单元测试运行这个查询。

+0

什么是异常被抛出? – proppy 2013-03-25 18:00:27

+0

未找到列(seller.id) – 2013-03-25 18:12:46

+0

“video”和“seller”中的所有列名是唯一的,即您确定没有两个名为'id'的列。如果有共享的列名,那么你不能使用'select *',并且尽可能避免'select *' – crowne 2013-03-26 11:09:58

回答

-1

列名seller_id(下划线)和seller.id(点)看起来不同,我

+0

只是为了测试我想第一个工作,看评论“例外” – 2013-03-25 14:58:17