Java 我需要帮助从数据库中获取数据
这是我的桌子Java 我需要帮助从数据库中获取数据,java,iteration,resultset,Java,Iteration,Resultset,这是我的桌子 FirstName----LastName----City--------State Ram----------Padhan------Houston-----TX Ram----------Padhan------Washingtom--MI Ram----------Padhan------Alok--------BG Keiry--------Lading------Azan--------BL Keiry--------Lading------Aror------
FirstName----LastName----City--------State
Ram----------Padhan------Houston-----TX
Ram----------Padhan------Washingtom--MI
Ram----------Padhan------Alok--------BG
Keiry--------Lading------Azan--------BL
Keiry--------Lading------Aror--------BS
如何获取数据,以便输出:
FirstName: Ram--LastName: Padhan
City: Houston--State:TX
City:Washington--State:MI
City:Alok--State:BG
FirstName: Keiry--LastName: Lading
City: Azan--State:BL
City:Aror--State:BS
除了按每行获取值外:
FirstName: Ram--LastName: Padhan
City: Houston--State:TX
FirstName: Ram--LastName: Padhan
City:Washington--State:MI
这就是我所做的。我得到的输出只是第一行firstname和lastname,而对于state和city列,我得到的值一直到最后一行
public class Practise
{
public static void main(String[] args)
{
Connection conn = null;
Statement stmt = null;
try {
Class.forName("com.mysql.jdbc.Driver") ;
String url = "jdbc:mysql://localhost:3306/table_name";
conn = DriverManager.getConnection(url,"root","root" );
stmt = (Statement) conn.createStatement();
String sql = "SELECT First_Name ,Last_Name ,City_Name , State_Name, FROM table_name";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
{
String first = rs.getString("First_Name");
String last = rs.getString("Last_Name");
System.out.print("First: " + first);
System.out.println("Last: " + last);
do
{
String city = rs.getString("City_Name");
String state = rs.getString("State_Name");
System.out.println("City: " + city);
System.out.println("State: " + state);
System.out.println();
} while(rs.next());
}
rs.close();
}
catch(SQLException se)
{
se.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
finally {
try {
if (stmt != null)
conn.close();
}
catch(SQLException se)
{ }
try {
if (conn != null)
conn.close();
}
catch(SQLException se)
{
se.printStackTrace();
}
}
}
}
您有一个
while
循环嵌套在另一个while
循环中
将其更改为:
while(rs.next())
{
String first = rs.getString("First_Name");
String last = rs.getString("Last_Name");
System.out.print("First: " + first);
System.out.println("Last: " + last);
String city = rs.getString("City_Name");
String state = rs.getString("State_Name");
System.out.println("City: " + city);
System.out.println("State: " + state);
System.out.println();
}
编辑我最初误解了你的问题。这是伪代码,因为我没有尝试过,但您需要使用组\u CONCAT
考虑使用两个表。一个用于个人,另一个用于城市/州。首先选择人员,然后在迭代时,使用键查找城市/州。请格式化代码,因为代码无法读取。事实上,把你的整个问题格式化。我认为你误解了这个问题。请参阅“如何获取数据,使我的输出成为问题中的”“后的输出。@Dukeling哦,你说得对……令人惊讶的是,格式有多么大的不同……去掉第二个循环将获得每行的值。我不能使用两个表。这是我工作的一部分。我必须使用单个表获取数据。
Person previousPerson = null;
Person nextPerson = null;
while(rs.next()) {
nextPerson = new Person(rs.getString("First_Name"), rs.getString("Last_Name"));
if( ! nextPerson.equals(previousPerson)) {
previousPerson = nextPerson;
System.out.println(previousPerson);
}
City city = new City(rs.getString("City_Name"), rs.getString("State_Name"));
System.out.println(city);
}
Person previousPerson = null;
Person nextPerson = null;
while(rs.next()) {
nextPerson = new Person(rs.getString("First_Name"), rs.getString("Last_Name"));
if( ! nextPerson.equals(previousPerson)) {
previousPerson = nextPerson;
System.out.println(previousPerson);
}
City city = new City(rs.getString("City_Name"), rs.getString("State_Name"));
System.out.println(city);
}