我有三张桌子,shipp和供给商.
全部三列都有与id,name,city … other沟通的列名.
我在java中编写了一个毗连:
String Query = "SELECT s.name Sname,s.city Scity,f.name Fname,f.city Fcity,"
+"su.name Suname,su.city Sucity "
+"FROM `order_details` ot "
+"INNER JOIN `order` o ON ot.odr_id = o.odr_id "
+"INNER JOIN `product` p ON ot.pro_id = p.id "
+"INNER JOIN `firm` f ON o.firm_id = f.id "
+"INNER JOIN `shipp` s ON o.shipp_id = s.id "
+"INNER JOIN `supplier` su ON o.sup_id = su.id ";
product,order和order_details是join中行使的其他表.
此查询在phpMyAdmin中事变.
可是在java ResultSet中,没有找到“列’Sname’.”错误.
我实行过以下办理方案,但这些对我不起浸染:
1)java.sq.SQLException: Column not found
2)Strange SQLException: Column not found
3)很多其他但没有人事变
错误仓库:
java.sql.SQLException: Column ‘Sname’ not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
和:
SEVERE: null
请帮我!
提前叩谢.
编辑1:
题目再现:
当我只从一个体名表(譬喻shipp)获取数据来运行它时,它会获取数据:
SELECT s.name Sname,s.city Scity ... other query part
可是一旦我从其他别名表中选择列(譬喻shipp,firm和supplier),它就会抛出上面写的错误非常(未找到列).
SELECT s.name Sname,su.name Suname,su.city Sucity ... other query part
留意:此查询在phpmyadmin中运行精采,但未行使ResultSet fetch运行.
这就是我从ResultSet(rs2)获取列的要领:
String firstColumn = "";
String secondColumn = "";
while(rs2.next()) {
firstColumn = "Shipp to : ";
firstColumn += rs2.getString("Sname") + rs2.getString("Scity") ;
firstColumn += "Person : " + rs2.getString("Fname") +"+ "+ rs2.getString("Fcity");
secondColumn = "Supplier : " + rs2.getString("Suname");
secondColumn += rs2.getString("Suname");
secondColumn += rs2.getString("Sucity");
}
最佳谜底
按照您的错误动静,我假设您行使MySQL与最新的毗连器.
假如必要,您可以行使positional queries,这是行使可以找到元素的位置的数字,譬喻:
rs2.getString(1);
(是的,编号从1开始…)它应该等同于此(虽然没有大写题目):
rs2.getString("Sname");
这样你只需知道位置,可是假如你看一下数据库/驱动措施中的区分巨细写险些是配置的题目.为了办理大大都题目,假如也许的话,我会用成本编写我的查询,而不必要反引号.
要试探ResultSet工具,请实行以下操纵:
Statement statement = ...;
String queryString = "SELECT s.name sname,s.city scity,f.name fname,f.city fcity,su.name suname,su.city sucity "
+" FROM `order_details` ot "
+" INNER JOIN `order` o ON ot.odr_id = o.odr_id "
+" INNER JOIN `product` p ON ot.pro_id = p.id "
+" INNER JOIN `firm` f ON o.firm_id = f.id "
+" INNER JOIN `shipp` s ON o.shipp_id = s.id "
+" INNER JOIN `supplier` su ON o.sup_id = su.id ";
ResultSet resultSet = statement.executeQuery(queryString);
ResultSetMetaData metaData = resultSet.getMetaData();
int colCount = metaData.getColumnCount();
if (resultSet.next()) {
for (int i = 1; i <= colCount; i++) {
System.out.println("Col(" + i + ") '" + metaData.getColumnName(i) + "' value:" + resultSet.getString(i));
}
}else{
System.out.println("No row found.");
}
此代码段将起首打印您正在行使的驱动措施返回的列和值.
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|