当我调试时,我收到此错误:
列' place1'没找到。
我能够验证它在sql中有列place1。
是因为我在一个函数中不能有两个数据库连接吗?我不确定如何进一步调试问题。
Case.java
logger.info('About to fetch Regions');
ec2.describeRegionsPromised({}).then(function (data) {
var addressesPromises = [];
logger.info('Fetched Regions');
logger.info(data);
_.forEach(data.Regions, function (region) {
var ec2Addresses = _.create(ec2, {region: region.RegionName});
addressesPromises.push(ec2Addresses.describeAddressesPromised());
});
logger.info('About to fetch addresses per region');
return Promise.all(addressesPromises);
}).then(function (data) {
logger.info('Fetched addresses per region');
logger.debug(data);
}).catch(function (err) {
logger.error('There was an error when fetching regions and addresses');
logger.error(err);
});
答案 0 :(得分:2)
跟踪您的代码,了解您获取数据的位置。错误在这一行:
String aaa=rs1.getString("place1");
rs1
来自哪里?:
ResultSet rs1 = ps.executeQuery();
ps
来自哪里?:
PreparedStatement ps = conn.prepareStatement(sql);
sql
来自哪里?:
String sql ="Select Day from menu where ID =?";
没有选择名为place1
的列。此查询仅选择名为Day
的单个列。
也许你打算从第二份准备好的声明中得到结果?:
ResultSet rs1 = ps1.executeQuery();
可能更多此类错误。也许有几个(或许多)更多。因为...
提示:使用有意义的变量名将使您的代码更多更容易理解。 ps
,ps1
,rs1
等很容易混淆。通过它们在概念上代表的东西命名变量,并且您的代码开始像可以遵循的故事一样阅读。像daysQuery
和daysResults
以及placesResults
这样的变量名称可以让您在尝试查找"地点时更加明显出错。在代表"天"。
答案 1 :(得分:1)
在第二个查询中:
PreparedStatement ps1 = conn.prepareStatement(sql);
您不小心使用变量 sql 而不是之前定义的 sql1 。更换它就可以了。