0

我的单元测试对此查询工作正常,但是当我在本地运行我的应用程序时,它找不到列卖方。

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 中的同一个离线数据库上运行,因此唯一的区别是我通过我的应用程序而不是单元测试运行此查询。

4

1 回答 1

-1

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

于 2013-03-25T14:55:17.247 回答